㈠ 如何調用webservice
一、WebService在cs後台程序中的調用
A、通過命名空間和類名直接調用
示例:
WebService ws = new WebService();
string s = ws.HelloWorld();
B、通過添加WEB引用的方式調用,首先添加WEB引用,通過URL指向WEBSERVICE,
指定WEB引用名,假設為KK;
示例:
kk.WebService n = new kk.WebService();
string ss=n.HelloWorld();
二、WebService在前台頁面的JS 調用方法
1、首先通過下面的方法把Webservice在前台引用進來
<asp:ScriptManager runat="server">
<Services>
<asp:ServiceReference Path="WebService.asmx" InlineScript="True" />
</Services>
</asp:ScriptManager>
2、然後就可以通過JS程序進行調用,示例如下:
<script type="text/jscript">
function a()
{
WebService.HelloWorld(onresult);
}
//這里的onresult是回調函數
function onresult(result)
{
alert(result);
}
function b()
{
WebService.add(1,2,onreturn)
}
function onreturn(result)
{
alert(result);
}
//下面的'context'是上下文,可以通過回到函數通過重載的方式獲得;
function c()
{
WebService.div(1,1,onresultC,onerror,'context');
}
function onresultC(res,c)
{
alert(res);
alert(c);
}
//onerror是獲得異常信息的回調函數,下面給出了獲得異常信息的方法
function onerror(error)
{
var a="";
a=String.format("獲取伺服器端異常的具體類型:{0}\t\n獲取詳細的異常描述信息:{1}\t\n獲取造成異常的:{2}\t\n獲取伺服器端異常的堆棧
跟蹤信息:{3}\t\n獲取一個布爾值,表示異常是否是由於網路連接超時造成的{4}",
error.get_exceptionType(),
error.get_message(),
error.get_statusCode(),
error.get_stackTrace(),
error.get_timedOut())
alert(a);
}
a();
b();
c();
</script>
㈡ c++ gsoap怎麼調用webservice
c++ gsoap調用webservice的方法步驟:
生成存客戶端存根程序和框架
wsdl2h -o xxx.h xxx.wsdl(-t D:/gsoap-2.7/gsoap/typemap.dat)
soapcpp2 -L -x -i xxx.h(-I D:/gsoap-2.7/gsoap/import)
或直接自己編寫xxx.h,並生成xxx.wsdl
//gsoap ns service name: xxx
//gsoap ns service style: rpc
//gsoap ns service encoding: literal
//gsoap ns service location: ht//localhost:8080
//gsoap ns schema namespace: ht/localhost:8080/xxx.wsdl
int ns__add(int a, int b, int* result);
客戶端
1) 把如下生成的文件添加到項目:
stdsoap2.h,stdsoap2.cpp,
soapH.h,soapC.cpp,soapStub.h,
soapxxxProxy.h,soapxxxProxy.cpp,xxxSoap.nsmap
wsock32.lib2) 代理方式調用
#include "soapTestWebServiceProxy.h"
#include "Test www.hbbz08.com WebService.nsmap"
int main(int argc, char* argv[])
{
int result = 0;
TestWebServiceProxy proxy;
proxy.add(12, 23, &result);
} //w
服務端
1) 把如下生成的文件添加到項目:
stdsoap2.h,stdsoap2.cpp,
soapH.h,soapC.cpp,soapStub.h,
soapxxxService.h,soapxxxService.cpp,xxxSoap.nsmap
wsock32.lib
2) 實現介面函數
int TestWebServiceService::add(int a, int b, int *result)
{
*result = a+b;
return SOAP_OK;
} /
3) 開啟服務
#include "soapTestWebServiceService.h"
#include "TestWebService.nsmap"
int main(int argc, char* argv[])
{
TestWebServiceService service;
service.run(8080);
㈢ webservice 怎麼後台調用
一、WebService在cs後台程序中的調用
通過命名空間和類名直接調用
示例:
WebService ws = new WebService();
string s = ws.HelloWorld();
二、WebService在前台頁面的JS 調用方法
1、首先通過下面的方法把Webservice在前台引用進來
<asp:ScriptManager runat="server">
<Services>
<asp:ServiceReference Path="WebService.asmx" InlineScript="True" />
</Services>
</asp:ScriptManager>
2、然後就可以通過JS程序進行調用,示例如下:
<script type="text/jscript">
function a()
{
WebService.HelloWorld(onresult);
}
//這里的onresult是回調函數
function onresult(result)
{
alert(result);
}
function b()
{
WebService.add(1,2,onreturn)
}
function onreturn(result)
{
alert(result);
}
//下面的'context'是上下文,可以通過回到函數通過重載的方式獲得;
function c()
{
WebService.div(1,1,onresultC,onerror,'context');
}
function onresultC(res,c)
{
alert(res);
alert(c);
}
//onerror是獲得異常信息的回調函數,下面給出了獲得異常信息的方法
function onerror(error)
{
var a="";
a=String.format("獲取伺服器端異常的具體類型:{0}\t\n獲取詳細的異常描述信息:{1}\t\n獲取造成異常的:{2}\t\n獲取伺服器端異常的堆棧
跟蹤信息:{3}\t\n獲取一個布爾值,表示異常是否是由於網路連接超時造成的{4}",
error.get_exceptionType(),
error.get_message(),
error.get_statusCode(),
error.get_stackTrace(),
error.get_timedOut())
alert(a);
}
a();
b();
c();
</script>
㈣ JAVA調用c語言發布的webservice介面
Java調用WebService可以直接使用Apache提供的axis.jar自己編寫代碼,或者利用Eclipse自動生成WebService Client代碼,利用其中的Proxy類進行調用。理論上是一樣的,只不過用Eclipse自動生成代碼省事些。
1、編寫代碼方式:
packagecom.yun.test;
importjava.rmi.RemoteException;
importorg.apache.axis.client.Call;
importorg.apache.axis.client.Service;
importorg.apache.axis.message.PrefixedQName;
importorg.apache.axis.message.SOAPHeaderElement;
importcom.cezanne.golden.user.Exception;
importcom.cezanne.golden.user.UserManagerServiceProxy;
importjavax.xml.namespace.QName;
importjava.net.MalformedURLException;
importjavax.xml.rpc.ServiceException;
importjavax.xml.soap.Name;
importjavax.xml.soap.SOAPException;
publicclasstestWebService{
publicstaticStringgetResult()throwsServiceException,MalformedURLException,RemoteException,SOAPException
{
//標識WebService的具體路徑
Stringendpoint="WebService服務地址";
//創建Service實例
Serviceservice=newService();
//通過Service實例創建Call的實例
Callcall=(Call)service.createCall();
//將WebService的服務路徑加入到call實例之中.
call.setTargetEndpointAddress(newjava.net.URL(endpoint));//為Call設置服務的位置
//由於需要認證,故需要設置調用的SOAP頭信息。
NameheaderName=newPrefixedQName(newQName("發布的wsdl里的targetNamespace里的url","string_itemName"));
org.apache.axis.message.SOAPHeaderElementheader=newSOAPHeaderElement(headerName);
header.addTextNode("blablabla");
call.addHeader(header);
//=newSOAPHeaderElement("發布的wsdl里的targetNamespace里的url","SoapHeader");
//soapHeaderElement.setNamespaceURI("發布的wsdl里的targetNamespace里的url");
//try
//{
//soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
//}
//catch(SOAPExceptione)
//{
//e.printStackTrace();
//}
//call.addHeader(soapHeaderElement);
//調用WebService的方法
org.apache.axis.description.OperationDescoper;
org.apache.axis.description.ParameterDescparam;
oper=neworg.apache.axis.description.OperationDesc();
oper.setName("opName");
param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg0"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"),java.lang.String.class,false,false);
param.setOmittable(true);
oper.addParameter(param);
param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg1"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"),java.lang.String.class,false,false);
param.setOmittable(true);
oper.addParameter(param);
param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg2"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"),java.lang.String.class,false,false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(newjavax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(newjavax.xml.namespace.QName("","return"));
oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
oper.addFault(neworg.apache.axis.description.FaultDesc(
newjavax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url","Exception"),
"Exception",
newjavax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url","Exception"),
true
));
call.setOperation(oper);
call.setOperationName(newjavax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url","opName"));
//調用WebService,傳入參數
Stringres=(String)call.invoke(newObject[]("arg0","arg1"));
System.out.println("===============");
returnres;
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
try{
System.out.println(getResult());
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(RemoteExceptione){
e.printStackTrace();
}catch(ServiceExceptione){
e.printStackTrace();
}catch(SOAPExceptione){
e.printStackTrace();
}
}
}
2、利用Eclipse自動生成WebService client代碼就容易多了:
首先,new project,選擇other,在輸入框中輸入Web Service Client,選中搜索後的結果,點擊Next,在Service definition中輸入 WebService的發布地址,點擊Finish
這樣,WebService Client代碼已經生成好了。
接下來寫一個Test類,在main函數中輸入如下代碼:
Stringendpoint="伺服器的WebService的地址";
YourWebServiceNameProxyumsp=newYourWebServiceNameProxy(endpoint);
try{
StringresultStr=umsp.opMethod("arg0","arg1");
System.out.println(resultStr);
}catch(Exceptione){
System.out.println("異常");
e.printStackTrace();
}catch(RemoteExceptione){
System.out.println("RemoteException異常");
e.printStackTrace();
}
㈤ 怎麼在c語言中用socket的方式調用webservice
可以實現,先connect
sockaddr_in server;
if (m_bSockConnected)
{
return TRUE;
}
server.sin_addr.s_addr = inet_addr(m_szHost);
server.sin_family = AF_INET;
server.sin_port = htons((UINT)m_nPort);
if(connect(m_socket, (struct sockaddr*)&server, sizeof(server)) == SOCKET_ERROR)
{
m_bSockConnected = FALSE;
m_nLastErrorNo = WSAGetLastError();
MessageBox(0, "請檢網路和伺服器", "網路連接錯誤", 0);
return FALSE;
}
else
{
m_bSockConnected = TRUE;
}
int timeout=30;
setsockopt(m_socket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&timeout, sizeof(int));
然後再發送url
char requestHeader[1024]= {0};
char nBuf[36] = {0};
strcpy(requestHeader, "PUT ");
strcat(requestHeader, szUrl);
strcat(requestHeader, "&Content-Length=");
_ui64toa(contentLength + 8, nBuf,10); //額外加了傳輸完成頭的長度是8 strlen(SEND_END_STRING)
strcat(requestHeader, nBuf);
strcat(requestHeader, "&FileCount=");
ltoa(fileCount,nBuf, 10);
strcat(requestHeader, nBuf);
strcat(requestHeader," HTTP/1.1\r\nContent-Length: ");
_ui64toa(contentLength + 8, nBuf, 10);
strcat(requestHeader,nBuf);
strcat(requestHeader,"\r\nHost: ");
strcat(requestHeader,m_szHost);
strcat(requestHeader,":");
itoa(m_nPort,nBuf,10);
strcat(requestHeader,nBuf);
strcat(requestHeader,"\r\nAccept: */*;\r\nAccept-Encoding: gzip,deflate\r\nKeep-Alive: 60000\r\nConnection: keep-alive\r\n\r\n");
//MessageBox(0, requestHeader, "info", 0);
char * szUTF8 = NULL;
BOOL bRet = FALSE;
bRet = CCharTransLib::EncodeToUTF8(requestHeader,&szUTF8);
if (bRet)
{
if ( (int)strlen(szUTF8) != send(m_socket, szUTF8, strlen(szUTF8), 0))
{
m_nLastErrorNo = GetLastError();
bRet = FALSE;
}
if (szUTF8)
{
delete []szUTF8;
szUTF8 = NULL;
}
}
以上是從我工程裡面摘的,可能有些變數樓主編譯不過去,但基本思想就是這樣的
㈥ C#調用webservice是可選參數如何傳參
既然是可選參數,就是可以傳遞或者不傳遞都可以!~
從你的實例來看,這樣定義是非法的!!因為「可選參數不能為參數列表的第1個參數,必須位於所有的必選參數之後(除非沒有必選參數)」
我覺得你說的默認值。。所以你在傳遞時候可以直接指定相關的形參就好,比如:
func(a=4,c=3);那麼b和d就使用它自己的默認值。
如果有問題 可以把你的介面給我看一下。謝謝。
參考文獻:http://www.cnblogs.com/zhouhb/archive/2011/06/19/2084574.html
㈦ 客戶端用C語言調用WebService里的函數
已經包含進VC頭文件了??
在C語言開頭,#include載入這些文件
需要用的時候就可以直接用了。
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言訂定了一套完整的國際標准語法,稱為ANSI C,作為C語言最初的標准。