java調用php介面時,php介面類必須實現所有方法嗎

本文目錄一覽:

java 怎麼調用php的api介面

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.nio.charset.Charset;

import XmlHelper;

public class QXOutStream {

public String outPutStr(String urlStr, String input) throws Exception{

StringBuffer strBuf = new StringBuffer();

String Resulst=””;

try{

URL url = new URL(urlStr);

HttpURLConnection con = (HttpURLConnection)url.openConnection();

con.setDoInput(true);

con.setDoOutput(true);

con.setRequestMethod(“POST”);

con.setAllowUserInteraction(false);

con.setUseCaches(false);

con.setRequestProperty(“Accept-Charset”, “GBK”);

BufferedOutputStream bufOutPut = new BufferedOutputStream(con.getOutputStream());

byte[] bdat = input.getBytes(“UTF-8”);//解決中文亂碼問題

bufOutPut.write(bdat, 0, bdat.length);

bufOutPut.flush();

BufferedInputStream inp = new BufferedInputStream(con.getInputStream());

InputStreamReader in = new InputStreamReader(inp,Charset.forName(“GBK”));

BufferedReader bufReador = new BufferedReader(in);

String tempStr = “”;

while (tempStr != null) {

strBuf.append(tempStr);

tempStr = bufReador.readLine();

}

Resulst = XmlHelper.getPostNodeText(strBuf.toString(), “OPERATOR_RESULT”);//.getPostFirstRowText(strBuf.toString(), “OPERATOR_RESULT”);

}

catch (Exception e) {

//System.err.println(“Exception:”+e.toString());

throw e;

//return “N”;

}

finally{

return Resulst;

}

}

}

你可以參考這個例子調用php 的api介面,這裡面的urlStr就是你調用php的api url介面

java怎麼調用php的語句是什麼

PHP調用JAVA方式

1. 背景

在開發招商銀行信用卡分期付款功能過程中,在支付成功之後需要對銀行的返回數據進行簽名驗證,因簽名加密方式招商銀行是不提供的,只提供了相應的JAVA驗證類測試例子,而本項目採用的是PHP架構方式,因此需要PHP調用JAVA的驗證類來測試簽名是否正確。

2. 目的

本文檔提供一種PHP調用JAVA類的方式來進行招行的支付成功簽名驗證,本方法也可用於其他銀行的JAVA簽名驗證方式。

3. 名詞解釋

名詞

解釋說明

php-java-bridge

PHP和JAVA的連接橋

4. php-java-bridge安裝和配置介紹

4.1 安裝

Php-java-bridge下載路徑:

最新php-java-bridge版本是php-java-bridge_6.2.1.tar.gz解壓之後採用/usr/local/php/phpize進行模塊編譯,提示Cannot find config.m4,版本過高問題,採用了5.4.4.2版本。

編譯及安裝:

tar zxvf php-java-bridge_5.4.4.2.tar.gz

cd php-java-bridge-5.4.4.2/

/usr/local/php/bin/phpize

./configure –disable-servlet –with-java=/usr/local/java/,/usr/local/java/jre –with-php-config=/usr/local/php/bin/php-configmake make install

4.2 配置

vim /usr/local/php/etc/php.ini

[新增]

extension=java.so

[java]

java.java_home=”/usr/local/java/”

java.java=”/usr/local/java/jre/bin/java”

java.log_file=”/var/log/php-java-bridge.log”java.classpath=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/JavaBridge.jar”java.libpath=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/”java.log_level=”3″

java.hosts=”10.204.79.232:8081″

4.3 啟動

重新啟動nginx或者apache,輸入?php phpinfo();?可以看到java support

Enabled

java bridge

5.4.4.2

java.log_level

2

手動啟動javaBridge

java -jar JavaBridge.jar SERVLET:8080

也可以嘗試使用java -jar JavaBridge.jar SERVLET_LOCAL:80814.4 測試

解壓javaBridge.jar,取出java目錄下相關的Java.inc文件測試代碼:

require_once(“java/Java.inc”);

$string = new Java(“java.lang.String”, “HelloWorld”);echo $string;

$system=new Java(“java.lang.System”);

echo “Java version=”.$system-getProperty(“java.version”).” “;注意:java/Java.inc記得從javaBridge.jar解壓出來放在相關php代碼中注意取值:java_is_true java_is_false java_values5. 注意事項及配置過程中的問題

下述描述在實際配置測試過程中可能會碰到的問題及解決方法:

5.1 問題

問題1:

configure: error: host_alias is not set. Make sure to run config.guessBack-end configuration failed.

Please install the recommended autoconf, libtool and automake versionsor disable back-end configuration and use the pre-compiled J2EE back-end:

./configure –disable-backend –with-java=JAVA_HOME

configure: error: ./configure.gnu failed for server安裝yum install libtool即可

5.2 注意事項

事項1:

遠程調用require_once(『『);需要設置php.ini的allow_url_include參數為on,同時編輯 JavaBridge 部署的 Web 應用程序目錄中的 web.xml 文件,如下:

取消對這個部分的注釋,以便允許對您的 Java 類進行遠程訪問init-param

param-namepromiscuous/param-name

param-valueOn/param-value

/init-param

事項2:

在實際生產環境中,考慮到如果每台機器都部署一個JavaBridge服務的話,不好維護。故考慮在單台或2台左右機器上部署,其他機器連接到部署機器上,可以做分流承壓的功效並且易監控。在外網環境下發現在調用部署環境的內外網IP都無法獲取到指定文檔。實際require_once本質就是調用部署環境的java.inc文件,可以考慮把相關文件放在本地生產環境上,但在引用Java_require相關JAR包會提示連接不到JavaBridge服務,閱讀Java.inc可以查看它會通過幾個地方設置JAVA_HOST宏變數,第一種是通過require_once裡面的IP或者域名和埠,另外一種是在未設置JAVA_HOST宏變數的前提下讀取php.ini,如果都沒有java.hosts參數則默認為127.0.0.1:8080。

排除第一種方式如果採用讀取php.ini的話,因為本身java.hosts參數不屬於PHP可人為設置的參數,採用ini_set函數並不能指定java.hosts的值,所以一種方式是在所有項目的生產環境的php.ini都指定內網IP和埠,如java.hosts=10.204.79.231:8080。還有一種方式,查閱Java.inc可以看到是在未設置JAVA_HOST變數的前提下是去讀取php.ini,我們可以在require_once(『java/Java.inc『)之前新增一行define (“JAVA_HOSTS”, $host)。

5.3 參考例子

個人的實際測試代碼如下:

private function _checkSign($strText, $strSign){$ret = false;

try{

$host = ConfigWrapper::load()-services-phpjava-host;if($host != NULL){

define (“JAVA_HOSTS”, $host);

}

require_once(『java/Java.inc『);

java_require(self::CMBJAR);

$pay = new Java(『testCdpaySign『, self::CERFILE);$result = $pay-checkSign((string)$strText, (string)$strSign);if(java_is_true($result) == 1){

$ret = true;

}

}catch (\Exception $e) {

Logger::debug(“_checkSign = ” . $e-getMessage());}

return $ret;

}

如何在java程序中調用php文件

安裝和配置PHP/Java橋

最新的PHP/Java橋zip包可在sourceforge .net/ projects/ php-java-bridge/下載到,安裝過程依賴於選擇哪個Java平台通過這座橋與PHP腳本交互。

◆對於J2SE,安裝非常簡單:

◆安裝J2SE 1.6或更高版本

◆安裝PHP 5.1.4或更高版本

◆解壓php-java-bridge_5.2.2_j2ee.zip包

在Java類中使用PHP腳本

為了在Java應用程序中調用PHP方法,你必須對Java API非常熟悉,這個API最重要的類是:

javax.script.ScriptEngineManager:這個類擴展了java.lang.Object類,並且為ScriptEngine類提供了實例化機制。

javax.script.ScriptEngine:這是一個Java介面,包括了每個Java ScriptEngine中期望的完整功能的函數,它是通過如AbstractScriptEngine, InteractivePhpScriptEngine, InvocablePhpScriptEngine, InvocablePhpServletScriptEngine, PhpScriptEngine,和 PhpServletScriptEngine這些類實現的。

javax.script.Invocable:這個介面提供了一個函數允許java應用程序在腳本編譯器下調用中間層代碼。

提醒:在/documentation/server/documentation/API目錄下有更多的類及其詳細信息。

java如何調用php介面

java那邊用個http客戶端,

請求php這邊的應用就可以了,

不過兩個系統還是要約定好

通信協議

(輸入/輸出數據格式)!

希望回答能給你帶來幫助~

如果滿意,請採納,如還有疑問,可繼續追問!

您也可以向我們團隊發出請求,會有更專業的人來為您解答!

Java調用php介面,入參只支持form-data格式,如何封裝參數?

介面返回的參數格式一般是由客戶端的需要來設置,至於你說的這些,一般是封裝成一個對象,然後將對象轉換成Json字元串返回,客戶端接收到Json字元串後,再轉換成對象來解析需要的信息就可以了。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/195510.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-02 20:35
下一篇 2024-12-02 20:35

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29

發表回復

登錄後才能評論