導航:首頁 > 編程語言 > javaphp調用webservice

javaphp調用webservice

發布時間:2023-02-01 02:33:47

A. php 中 webservice 是如何使用的 調用別人的介面 參數是如何傳遞的

php調用web service還是非常簡單的。下面用一個例子說明:
web service服務是查詢QQ用戶是否在線
使用php5開發客戶端:
<?php
try {
//$client = new SoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));
$client = new SoapClient("webservices/qqOnlineWebService.asmx?wsdl");
var_mp($client->__getFunctions());
print("");
var_mp($client->__getTypes());
print("");

class qqCheckOnline{
var $qqCode = "10000";
};
$arrPara = array(new qqCheckOnline);

$arrResult = $client->__Call("qqCheckOnline",$arrPara);//$client->qqCheckOnline($arrPara);

echo $arrResult->qqCheckOnlineResult . "";
} catch (SOAPFault $e) {
print $e;
}
?>
代碼確實很簡單吧,創建SoapClient對象時,可以使用保存在本地WSDL文件,也可以使用遠程的地址,後面的array數組里可以帶上很多的參數,具體參數可以查php的SoapClient幫助,這里帶的是字元集編碼,如果調用方法的參數里有中文,一定要指定字元集編碼,否則會出錯。
調
用web service前可以先調用SoapClient的__geunctions()和__getTypes()方法看一下你要調用的
web service暴露的方法,參數和數據類型,需要注意的是傳入的參數名一定要和soapclient裡面定義的一致,否則參數是傳不過去的。
需要使用SoapClient的__soapCall()或__call()方法,具體使用方法可以查php的幫助文檔。如果參數要求是一個結構體,請用類代替,如上面的代碼。
另外發現個問題,如果web service方法返回的是xml格式的字元串,php接收到以後會自己把數據內容解析出來,而不是xml字元串.

B. PHP 調取 java webservice 獲取不到值

$http變數是那個鏈接,我當時是這樣的,重要的是傳過去那邊的參數那邊沒收到,參數是這樣的$params = array("string"=>"", "string1"=>xxx, "string2"=>xxx....);

忘了當時為什麼第一個參數要傳空,參數名不是那邊給的參數名,要用string1,string2...這樣的代表第1個,第2個參數, $fun是他那邊的方法名

C. php怎麼調用java的https方式的webservice介面

webservice 發展了好久了,有好多種客戶端部署調用方式 ,流程大致是先創建服務,再調用。
下面的代碼是創建一個簡單的Webservice服務.
server.php
<?php

require_once "lib/nusoap.php";
function webserver() {
return "This is a Webservice Server";
}
$soap = new soap_server;
$soap->register('webserver');
$soap->service($HTTP_RAW_POST_DATA);
?>

上面的代碼就創建了一個Webservice服務程序,接下來創建調用Webservice介面的程序:
<?php
require_once "soap/lib/nusoap.php";

$web_url = "127.0.0.1";
$client = new soapclient($web_url."/server.php");

$param = array();
$ret = $client->call('webserver', $param, $web_url, $web_url);

echo $ret;

?>
基本上流程就是這樣,當然,實際應用上能寫出很復雜的東西,這個你可以找找相關資料學習一下,上面的php調用Webservice程序是通用的,適合於PHP調用其它ASP.NET及Java等各類語言的Webservice介面。一些技術博文里有很詳細的介紹和學習。

D. 怎樣用php調用webservice

PHP中也可以調用WebService。這是通過一個第三方的類來實現的。
NuSOAP - Web Services Toolkit for PHP,這是一個開源的API,其中有

nusoap_base
soap_fault
XMLSchema
soapval
soap_transport_http
soap_server
wsdl
soap_parser
soapclient
這幾個類,我們用到的是soapclient類

E. 如何實現PHP WSDL webservice 讓我的客戶端訪問

如何實現PHP WSDL webservice 讓我的客戶端訪問
下面我們來看Java如何通過WSDL文件來調用這些web service:
注意,以下的代碼並沒有經過真正的測試,只是說明這些情況,不同版本的Axis相差很大,大家最好以apache網站上的例子為准,這里僅僅用於說明其基本用法。
1,直接AXIS調用遠程的web service
我覺得這種方法比較適合那些高手,他們能直接看懂XML格式的WSDL文件,我自己是看不懂的,尤其我不是專門搞這行的,即使一段時間看懂,後來也就忘記了。直接調用模式如下:
import java.util.Date;
import java.text.DateFormat;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.lang.Integer;
import javax.xml.rpc.ParameterMode;

F. PHP調用java的webservice,傳參java接收不到

json吧 不同語言json是最好的途徑

G. php調用java的WebService報異常

java端報的什麼錯?要兩頭看看的,這樣看不很出來什麼。
你直接訪問地址看能訪問到不,看你的錯可能是許可權的原因。
所謂webservice就是舊瓶裝新酒,你servlet要是熟這東西就很好理解,
其實就是http協議傳sun包裝好的xml

H. php如何調用webservice應用介紹

Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術,接下來將詳細介紹php如何調用webservice,需要的朋友可以了解下1.1、Web Service基本概念 Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:通過SOAP在Web上提供的軟體服務,使用WSDL文件進行說明,並通過UDDI進行注冊。 XML:(Extensible Markup Language)擴展型可標記語言。面向短期的臨時數據處理、面向萬維網路,是Soap的基礎。 Soap:(Simple Object Access Protocol)簡單對象存取協議。是XML Web Service 的通信協議。當用戶通過UDDI找到你的WSDL描述文檔後,他通過可以SOAP調用你建立的Web服務中的一個或多個操作。SOAP是XML文檔形式的調用方法的規范,它可以支持不同的底層介面,像HTTP(S)或者SMTP。 WSDL:(Web Services Description Language) WSDL 文件是一個 XML 文檔,用於說明一組 SOAP 消息以及如何交換這些消息。大多數情況下由軟體自動生成和使用。 UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務供應商和使用者的新項目。在用戶能夠調用Web服務之前,必須確定這個服務內包含哪些商務方法,找到被調用的介面定義,還要在服務端來編制軟體,UDDI是一種根據描述文檔來引導系統查找相應服務的機制。UDDI利用SOAP消息機制(標準的XML/HTTP)來發布,編輯,瀏覽以及查找注冊信息。它採用XML格式來封裝各種不同類型的數據,並且發送到注冊中心或者由注冊中心來返回需要的數據。1.2、XML Web Service的特點 Web Service的主要目標是跨平台的可互操作性。為了實現這一目標,Web Service 完全基於XML(可擴展標記語言)、XSD(XML Schema)等獨立於平台、獨立於軟體供應商的標准,是創建可互操作的、分布式應用程序的新平台。

I. PHP如何調用webservice

最近工作中需要用php調用webservice介面,對php不熟,上網搜搜,發現關於用php調用webservice的文章也不多,不少還是php4里用nusoap這個模塊調用的方法,其實php5里已經包含了處理soap的模塊,但是資料太少了,上php官網上查幫助,寫的不是很容易理解,經過多次實踐,終於搞清楚了,php調用webservice還是非常簡單的。下面用一個例子說明:
webservice服務是查詢QQ用戶是否在線
使用php5開發客戶端:
<?php
try{
//$client=newSoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));
$client=newSoapClient("webservices/qqOnlineWebService.asmx?wsdl");
var_mp($client->__getFunctions());
print("<br/>");
var_mp($client->__getTypes());
print("<br/>");

classqqCheckOnline{
var$qqCode="10000";
};
$arrPara=array(newqqCheckOnline);

$arrResult=$client->__Call("qqCheckOnline",$arrPara);//$client->qqCheckOnline($arrPara);

echo$arrResult->qqCheckOnlineResult."<br/>";
}catch(SOAPFault$e){
print$e;
}
?>
代碼確實很簡單吧,創建SoapClient對象時,可以使用保存在本地WSDL文件,也可以使用遠程的地址,後面的array數組里可以帶上很多的參數,具體參數可以查php的SoapClient幫助,這里帶的是字元集編碼,如果調用方法的參數里有中文,一定要指定字元集編碼,否則會出錯。
調用webservice前可以先調用SoapClient的__geunctions()和__getTypes()方法看一下你要調用的webservice暴露的方法,參數和數據類型,需要注意的是傳入的參數名一定要和soapclient裡面定義的一致,否則參數是傳不過去的。
需要使用SoapClient的__soapCall()或__call()方法,具體使用方法可以查php的幫助文檔。如果參數要求是一個結構體,請用類代替,如上面的代碼。
另外發現個問題,如果webservice方法返回的是xml格式的字元串,php接收到以後會自己把數據內容解析出來,而不是xml字元串.

J. php做客戶端,java做服務端,用webservice怎麼交互

.java編寫webservice服務端,php作為客戶端調用.
1.首先我們寫一個簡單的java類並發布webservice.
package com.php;
import java.util.Map;
/**
* @author yangjuqi
* @createdate 2009-5-18 下午04:43:09
*
*/
public class WebServiceImpl {
public String sendTransact(Map map) throws Exception {
System.out.println("::: Call testModel1 :::");

if(map!=null){
String bugmanifestid = StringUtil.getValue(map.get("bugmanifestid"));
String editedby = StringUtil.getValue(map.get("editedby"));
String dditeddate = StringUtil.getValue(map.get("dditeddate"));
String fullinfo = StringUtil.getValue(map.get("fullinfo"));
String action = StringUtil.getValue(map.get("action"));
System.out.println("bugmanifestid -$amp;>quot;$ +bugmanifestid);
System.out.println("editedby -$amp;>quot;$ +editedby);
System.out.println("dditeddate -$amp;>quot;$ +dditeddate);
System.out.println("fullinfo -$amp;>quot;$ +fullinfo);
System.out.println("action -$amp;>quot;$ +action);
}
return "success";
}
}
2.配置server-config.wsdd
<deployment xmlns=""
xmlns:java="">
<handler name="URLMapper"
type="java:org.apache.axis.handlers.http.URLMapper" />
<handler name="auth"
type="java:com.php.AuthenticationHandler" />
<handler name="URLLogging"
type="java:com.php.LogHandler">
<parameter name="filename" value="c:\\MyService.log" />
</handler>
<service name="IWebService" provider="java:RPC">
<parameter name="className"
value="com.php.WebServiceImpl" />
<parameter name="allowedMethods" value="*" />
<namespace>http://localhost:8088/testphpweb</namespace>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper" />
<handler type="URLLogging" />
</requestFlow>
</transport>
</deployment>
3.發布到jboss後,訪問http://localhost:8088/testphpweb/services/IWebService wsdl能看到xml文件就說明webservice發布好了。
4.寫testphpweb.php文件
< php
/*
* @author juqi yang $amp;<amp;$gt;
* @create date 2009-05-18
*/
header("Content-Type: text/html; charset=GB2312");
echo " ::: PHP CALL JAVA-WEBSERVICE ::: <br$amp;>quot;$;
require_once("nusoap/lib/nusoap.php");
// 要訪問的webservice路徑
$NusoapWSDL="http://localhost:8088/testphpweb/services/IWebService wsdl";
// 生成客戶端對象
$client = new soapclient($NusoapWSDL, true);
// 設置參數(注意:PHP只能以'數組集'方式傳遞參數,如果服務端是java,用Map接收)
$param = array( 'bugmanifestid' => 'E090500001',
'editedby' => '張三',
'dditeddate' => '2009-05-19',
'fullinfo' => '已聯系劉德華,籌備今晚吃飯的事,等待回復',
'action' => '0');
echo "begin remote 。。。<br$amp;>quot;$;
// 調用遠程方法
$result = $client->call('sendTransact', array($param));
echo "end remote 。。。<br$amp;>quot;$;
// 顯示執行結果
if (!$err=$client->getError()){
echo '結果 : '.$result;
}else{
echo '錯誤 : '.$err;
}
>
5.啟動apache,訪問
php頁面顯示:
::: PHP CALL JAVA-WEBSERVICE :::
begin remote 。。。
end remote 。。。
結果 : success
jboss後台監視結果:
17:12:20,781 INFO [STDOUT] ::: Call testModel1 :::
17:12:20,781 INFO [STDOUT] bugmanifestid ->E090500001
17:12:20,781 INFO [STDOUT] editedby ->張三
17:12:20,781 INFO [STDOUT] dditeddate ->2009-05-19
17:12:20,781 INFO [STDOUT] fullinfo ->已聯系劉德華,籌備今晚吃飯的事,等待回復
17:12:20,796 INFO [STDOUT] action ->0
到此,php作為客戶端調用java寫的webservice服務端完成.
二,php編寫webservice服務端,java作為客戶端調用.
1.編寫php webservice
< php
/*
* @author juqi yang $amp;<amp;$gt;
* @create date 2009-05-18
*/
header("Content-Type: text/html; charset=GB2312");
require_once("nusoap/lib/nusoap.php");
function sendManifest($param)
{
//把接收到的數據顯示出來
return "hello ".$param["projectid"]."<=$amp;>quot;$.$param["projectname"]."<=$amp;>quot;$.$param["moleid"];
}
$server = new nusoap_server();
//配置WSDL namespace
$server->configureWSDL('myservice', //服務名稱
'', //tns指定的namespace,一般填寫自己的URI
true, //endpoint url or false
'rpc', //服務樣式
'', //傳輸協議,一直是這個。
'' //wsdl 'types'元素targetNamespace
);
// 注冊web服務
$server->register('sendManifest', // 服務
array(
'projectid' => 'xsd:string',
'projectname' => 'xsd:string',
'moleid' => 'xsd:string',
'molepath' => 'xsd:string',
'bugtitle' => 'xsd:string',
'bugtype' => 'xsd:string',
'openedby' => 'xsd:string',
'openeddate' => 'xsd:string',
'assignedto' => 'xsd:string',
'assigneddate' => 'xsd:string',
'fixedtime' => 'xsd:string',
'fullinfo' => 'xsd:string',
'bugmanifestid' => 'xsd:string'), // 輸入參數;數組,指定類型
array('resultCode' => 'xsd:string'), // 輸出;數組,指定類型
'', // namespace of method
'', // soapaction
'rpc', // style
'encoded', // use
'serviceConsumeNotify' // documentation
);
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
>
2.啟動apache後,訪問 ,如果頁面如下圖所示,表示webservice發布好了。
3.編寫java客戶端CallPhpServer .java 並調用php webservice
package com.php;
import java.util.HashMap;
import java.util.Map;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
/**
* @author yangjuqi
* @createdate 2009-5-18 下午05:31:06
*
*/
public class CallPhpServer {
/**
* 測試方法
* @return
* @throws Exception
*/
public static String callManifest() throws Exception {
System.out.println("0");
Service service = new Service();
Call call = (Call) service.createCall();
System.out.println("1");
call.setTargetEndpointAddress(new java.net.URL(""));
call.setOperationName("sendManifest");
System.out.println("2");
Map map=new HashMap();
map.put("projectid", "109");
map.put("projectname", new String("新MM國際物流平台".getBytes(),"iso-8859-1"));
map.put("moleid", "11");
map.put("molepath", new String("財務管理".getBytes(),"iso-8859-1"));
map.put("bugtitle", new String("關於總賬報表數據的問題".getBytes(),"iso-8859-1"));
map.put("bugtype", "TrackThings");
map.put("openedby", "zhangsan");
map.put("openeddate", "2009-05-31");
map.put("assignedto", "liumang");
map.put("assigneddate", "2009-05-31");
map.put("fixedtime", "2009-06-03");
map.put("fullinfo", new String("現在總賬報表頁面下的合計數據不對,煩請抓緊事件核實確認更正,謝謝!".getBytes(),"iso-8859-1"));
map.put("bugmanifestid", "E090500001");
call.addParameter("param", org.apache.axis.Constants.SOAP_ARRAY,javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.Constants.XSD_STRING);
System.out.println("3");
Object obj=call.invoke(new Object[]{map});
return obj.toString();
}
public static void main(String[] args) throws Exception {
System.out.println("::: call php webservice :::");
String str = callManifest();
String result=new String(str.getBytes("iso-8859-1"),"GBK");
System.out.println(result);
}
}
控制台顯示結果:
::: call php webservice :::
0
log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.
1
2
3
hello 109<=>新MM國際物流平台<=>11
到此,java作為客戶端調用php的webservice服務端完成.

閱讀全文

與javaphp調用webservice相關的資料

熱點內容
編譯器怎麼調用構造函數的 瀏覽:95
高質量cpdf 瀏覽:821
福建電信代理伺服器雲主機 瀏覽:616
美圖看看pdf 瀏覽:432
編譯後報錯 瀏覽:291
網路設備怎麼加密 瀏覽:785
hbuilderx文件夾有哪些 瀏覽:102
空調壓縮機生產板塊 瀏覽:612
開源多媒體伺服器都有什麼 瀏覽:392
反編譯了別人的app會被發現嗎 瀏覽:918
上海光裕汽車壓縮機有限公司 瀏覽:333
連接ps4伺服器地址 瀏覽:136
新神魔大陸三星賬號是什麼伺服器 瀏覽:677
壓縮機lj100cy 瀏覽:556
王者系統怎麼轉回安卓系統 瀏覽:749
linux查看路由表命令 瀏覽:506
高手程序員使用什麼筆記本 瀏覽:440
ios壓縮圖片app 瀏覽:839
排隊論pdf 瀏覽:520
python調用無參函數 瀏覽:799