當前位置:首頁 » 編程語言 » webservicec語言調用

webservicec語言調用

發布時間: 2025-02-10 13:49:32

⑴ 如何調用WebService介面把數據存儲資料庫里而不使用JSP頁面

訪問WEBSERVICE本來都不需要使用JSP頁面吧?直接客戶端調用就行了啊。如果有返回對象的話,生成一下對象,如果只返回的基本類型的話,直接解析XML就OK了。

java如何調用介面方式

計算機語言分類有很多,如C、C++、C#、Java、Php、Python等等,她們有各自的特性及擅長的領域,但她們各自又不是全能的。在一個稍微大型一點的項目都會用到多種語言共同完成,那麼這些編程語言如何進行通信呢。什麼意思呢,就是比如說我Java寫的一個方法,其他編程語言要怎麼去調用呢?這就是本文要探討的問題了。
一般來說,方法層面的編程語言通信用的是網路介面形式,只暴露出形參和結果供別人調用。介面一般分為介面定義者和介面調用者,定義者可以規定接收參數的類型及返回形式,而介面定義者則只能完全按照介面定義者規定的參數進行訪問。就叫是我們所說的webService(網路服務)。
以前的做法是利用XML作介面格式定義,然後通過Http做通訊和請求,如大名鼎鼎的SOAP,其實現在也是的,只不過現在流行RestFul風格的Rest介面形式,但用的還是XML+HTTP,那這兩者有啥區別呢?最大的區別就是SOAP返回的主要是XML格式,有時還需要附帶一些輔助文件,而Rest則還可以返回JSON類型的字元串,減少了很多繁亂的XML標簽。

⑶ 調用webservice服務,入口參數比較復雜,不知道怎麼調用

調用webservice服務,入口參數比較復雜,不知道怎麼調用
3.11.4 常量類型
整數,長整數,無符號數,浮點數,字元,字元串,符號常數,轉義字元。
3.11.5 數據類型轉換
?自動轉換:在不同類型數據的混合運算中,由系統自動實現轉換,由少位元組類型向多位元組類型轉換。不同類型的量相互賦值時也由系統自動進行轉換,把賦值號右邊的類型轉換為左邊的類型。
?強制轉換:由強制轉換運算符完成轉換。
3.11.6 運算符優先順序和結合性
一般而言,單目運算符優先順序較高,賦值運算符優先順序低。算術運算符優先順序較高,關系和邏輯運算符優先順序較低。多數運算符具有左結合性,單目運算符、三目運算符、賦值運算符具有右結合性。
3.11.7 表達式
表達式是由運算符連接常量、變數、函數所組成的式子。 每個表達式都有一個值和類型。表達式求值按運算符的優先順序和結合性所規定的順序進行。
c語言 4

⑷ 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(","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(","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(","string"),java.lang.String.class,false,false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(newjavax.xml.namespace.QName(","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();
}

⑸ 怎麼調用webservice服務

寫一個WINDOWS服務定期調用webservice中的方法。

1、先建一個WebService(ASP.NET Web 服務應用程序)

2、建這個WebService的虛擬目錄

3、執行生成一個文件
{
C:\Program Files\Microsoft Visual Studio 8\VC>wsdl /language:C# /out:c:\myProxyClass.cs http://hostServer:88/ImportData.asmx?WSDL
這個工具(方法)是針對一個webservice生成一個能動態調用的類
language:C#-----C#語言輸出

c:\myProxyClass.cs-----這個是生成的文件存在本地的文件名和路徑

http://hostServer:88/ImportData.asmx-----是虛擬目錄運行時的地址
}

4、創建一個windows服務程序(新建項目->左側選windows->右側選windows服務),然後把生成的文件引入到windows服務的程序中

5、寫調用事件(BeginImportUFData)

6、完成後編譯生成一下,這時就會在此windows服務程序的bin文件夾下生成一個exe文件(如:MyNewService.exe
)

7、按以下方式安裝

安裝:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe 絕對路徑\MyNewService.exe
卸載:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -u 絕對路徑\MyNewService.exe

例如:(用dos命令窗口執行)

安裝:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe E:\chengxu\MyNewService\MyNewService\bin\Debug\MyNewService.exe
【然後顯示:正在安裝程序集,最後顯示:「提交」階段成功完成】
卸載:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -u E:\chengxu\MyNewService\MyNewService\bin\Debug\MyNewService.exe
【最後提示:卸載完成】

啟動、停止服務是window操作,找到管理-->服務 操作

⑹ 怎麼在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,參數string會有長度限制嗎

般情況下,超過10000位元組,就會調用失敗,但是這不是字元串長度限製造成的,而是數據量過大,造成在網路在傳輸時間過長,超出了webservice默認的超時設置,導致調用失敗,傳統的做法是,數據量過大時要對數據進行壓縮,客戶端進行解壓。或者修改webservice的timeout為較長的時間,或者設置為無窮大。這兩種辦法可以同時使用。
soap本身就是被序列化的,盡量不要直接傳過大的數據,可以換種方式,如內網可考慮文件形式存儲給出文件路徑等方式,外網分割成多個包去返回!!

熱點內容
x86編程 發布:2025-03-05 09:24:22 瀏覽:171
怎麼支付寶信用卡提現密碼 發布:2025-03-05 09:21:20 瀏覽:117
月神腳本圈 發布:2025-03-05 09:13:44 瀏覽:176
62批量操作腳本 發布:2025-03-05 08:52:57 瀏覽:608
java證書加密 發布:2025-03-05 08:45:44 瀏覽:238
給定演算法 發布:2025-03-05 08:45:43 瀏覽:93
視頻存儲碼流 發布:2025-03-05 08:30:52 瀏覽:894
六龍爭霸腳本輔助 發布:2025-03-05 08:25:56 瀏覽:580
es存儲視頻 發布:2025-03-05 08:01:31 瀏覽:598
預處理能不能直接進行編譯 發布:2025-03-05 07:56:24 瀏覽:530