本文目錄一覽:
- 1、java 怎麼調用php的api介面
- 2、java怎麼調用php的語句是什麼
- 3、如何在java程序中調用php文件
- 4、java如何調用php介面
- 5、Java調用php介面,入參只支持form-data格式,如何封裝參數?
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