javaaxis調用
『壹』 java 如何調用 axis webservice
import java.io.*;
import java.util.*;
import java.net.*;
import org.w3c.dom.*;
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.encoding.*;
import org.apache.soap.encoding.soapenc.*;
import org.apache.soap.rpc.*;
import org.apache.soap.transport.http.SOAPHTTPConnection;
public class testClient {
public static void main(String[] args) throws Exception {
URL url = new URL ("http://192.168.0.4/yundan/service1.wsdl");
//改成你的地址
SOAPMappingRegistry smr = new SOAPMappingRegistry ();
StringDeserializer sd = new StringDeserializer ();
smr.mapTypes (Constants.NS_URI_SOAP_ENC, new QName ("", "Result"), null, null, sd);
// 創建傳輸路徑和參數
SOAPHTTPConnection st = new SOAPHTTPConnection();
// 創建調用
Call call = new Call ();
call.setSOAPTransport(st);
call.setSOAPMappingRegistry (smr);
call.setTargetObjectURI ("http://tempuri.org/message/");
call.setMethodName("addNumbers");
call.setEncodingStyleURI ("http://schemas.xmlsoap.org/soap/encoding/");
Vector params = new Vector();
params.addElement(new Parameter("NumberOne", Double.class, "10", null));
params.addElement(new Parameter("NumberTwo", Double.class, "25", null));
call.setParams(params);
Response resp = null;
try {
resp = call.invoke (url, "http://tempuri.org/action/Hello2.addNumbers");
}
catch (SOAPException e) {
System.err.println("Caught SOAPException (" + e.getFaultCode () + "): " + e.getMessage ());
return;
}
// 檢查返回值
if (resp != null && !resp.generatedFault()) {
Parameter ret = resp.getReturnValue();
Object value = ret.getValue();
System.out.println ("Answer--> " + value);
}
else {
Fault fault = resp.getFault ();
System.err.println ("Generated fault: ");
System.out.println (" Fault Code = " + fault.getFaultCode());
System.out.println (" Fault String = " + fault.getFaultString());
}
}
}
你可以參考一下這個.
URL就是axis的地址
『貳』 java axis調用webservice,介面方法中的數組型參數應該怎麼傳參
雖然我沒用過你這個開發webservice,但用過xfire,建議你把數組改為string傳值,然後那邊進行split再轉為數組
『叄』 「Java:用axis調用webservice方法時報(400)Bad Request錯,請問您當時問題解決啦嗎
在網上查了一下,可能是本地cookie隱私設置的問題。一般在上網瀏覽網站的時候第一次打開完網頁再打開連接以後就出現HTTP 400 - 錯誤請求的問題。
解決的方法如下:
1、打開internet選項
2、刪除所有的cookies
3、點隱私把隱私級別設置到最高阻止所有的cookie
這樣瀏覽網頁的時候就不會再出現HTTP 400 - 錯誤請求的問題了。但是瀏覽某些需要cookie的網站(如:論壇或需要登陸的站點)時候就無法登陸了,所以在瀏覽完後記得要把隱私級別降低調回來,登陸站點以後保留cookies就可以了。
斷點調試下,先清空下伺服器的Work再試試
『肆』 如何解決javaaxis調用webservice伺服器操作異常
一、WebService在cs後台程序中的調用A、通過<ahref="https://www..com/s?wd=%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4&tn=44039180_cpr&fenlei=-w9Uz4Bmy-bIi4WUvYETgN-"target="_blank"class="-highlight">命名空間</a>和類名直接調用示例:WebServicews=newWebService();strings=ws.HelloWorld();B、通過添加WEB引用的方式調用,首先添加WEB引用,通過URL指向WEBSERVICE,指定WEB引用名,假設為KK;示例:kk.WebServicen=newkk.WebService();stringss=n.HelloWorld();二、WebService在前台頁面的JS調用方法1、首先通過下面的方法把Webservice在前台引用進來2、然後就可以通過JS程序進行調用,示例如下:functiona(){WebService.HelloWorld(onresult);}//這里的onresult是<ahref="https://www..com/s?wd=%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0&tn=44039180_cpr&fenlei=-w9Uz4Bmy-bIi4WUvYETgN-"target="_blank"class="-highlight">回調函數</a>functiononresult(result){alert(result);}functionb(){WebService.add(1,2,onreturn)}functiononreturn(result){alert(result);}//下面的'context'是上下文,可以通過回到函數通過重載的方式獲得;functionc(){WebService.div(1,1,onresultC,onerror,'context');}functiononresultC(res,c){alert(res);alert(c);}//onerror是獲得異常信息的<ahref="https://www..com/s?wd=%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0&tn=44039180_cpr&fenlei=-w9Uz4Bmy-bIi4WUvYETgN-"target="_blank"class="-highlight">回調函數</a>,下面給出了獲得異常信息的方法functiononerror(error){vara="";a=String.format("獲取<ahref="https://www..com/s?wd=%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF&tn=44039180_cpr&fenlei=-w9Uz4Bmy-bIi4WUvYETgN-"target="_blank"class="-highlight">伺服器端</a>異常的具體類型:{0} 獲取詳細的異常描述信息:{1} 獲取造成異常的:{2} 獲取<ahref="https://www..com/s?wd=%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF&tn=44039180_cpr&fenlei=-w9Uz4Bmy-bIi4WUvYETgN-"target="_blank"class="-highlight">伺服器端</a>異常的堆棧跟蹤信息:{3} 獲取一個布爾值,表示異常是否是由於網路連接超時造成的{4}",error.get_exceptionType(),error.get_message(),error.get_statusCode(),error.get_stackTrace(),error.get_timedOut())alert(a);}a();b();c();
分享
『伍』 java用axis調用webService啟動異常 錯誤: 程序包org.apache.axis.client org.apache.axis.encoding不存在
項目缺少jar依賴吧。
看下 maven pom.xml文件裡面是不是 沒有
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
『陸』 java axis2 調用webservice 怎麼捕獲超時異常(即超時了讓它停下來,不要報錯)
超時分兩種,一種是客戶端請求連接超時,一種是服務端處理時間過長,客戶端等待超時。 看你要捕獲哪一種?
第一種你可以捕獲ConnectTimeOutException;
第二種你可以在客戶端設置超時時間,比如發起請求之後服務端5秒還未返回處理後的結果就認為超時;
在異常處理中執行正常業務邏輯即可。
『柒』 java怎麼使用axis調用webservice
方式一:生成客戶端代碼調用方式。
通過插件工具生成客戶端代碼進行調用。例如:存在一服務為 http://127.0.0.1:8000/axis2/services/SMSSendService?wsdl通過插件可以生成SMSSendServiceStub.Java和SMSSendServiceCallbackHandler.java類。調用的客戶端代碼如:
try {
SMSSendServiceStub stub=new SMSSendServiceStub();
SMSSendServiceStub.method1 m1=new SMSSendServiceStub.method1();
m1.setParam1("xxx");
try {
String ret=stub.multiSend(m1).get_return();
System.out.print(ret);
} catch (RemoteException e) {
e.printStackTrace();
}
} catch (AxisFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
方式二:使用axis2.rpc.client.RPCServiceClient方式調用。
調用的代碼簡單舉例如下:
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
......
try {
final String endpoint = "http://127.0.0.1:8000/axis2/services/SMSSendService";
String opName = "method1";
String param="xxx";
Object[] opArgs = new Object[] { param };
Class<?>[] opReturnType = new Class[] { String[].class };
RPCServiceClient serviceClient = new RPCServiceClient();//此處RPCServiceClient 對象實例建議定義成類中的static變數,否則多次調用會出現連接超時的錯誤。
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference(endpoint);
options.setTo(targetEPR);
QName opQName = new QName("http://service.ws.sms.ipcc.ydtf.com",
opName);
Object[] ret = serviceClient.invokeBlocking(opQName, opArgs,
opReturnType);
System.out.println(((String[]) ret[0])[0]);
} catch (AxisFault e) {
e.printStackTrace();
}
『捌』 java axis調用webservice,介面方法中的數組型參數
雖然我沒用過你這個開發webservice,但用過xfire,建議你把數組改為string傳值,然後那邊進行split再轉為數組java axis調用webservice,介面方法中的數組型參數
『玖』 java用axis調用web services出錯,請各位牛人看看是啥有關問題
首先你得先排查是你自己代碼的異常還是webservice出錯了,如果是webservice的錯,那麼客戶端只能自己try catch 處理了,或者去修改webservice車源碼重新發布。
如果是客戶端自己的異常,那就找出異常的地方,做處理了。參考:
http://..com/question/626025226575898604.html?from=pubpage&msgtype=2
還有,java調用webservice其實可以讓eclipse幫我們生成客戶端調用代碼的,只要知道wsdl就可以了。
『拾』 如何解決java axis 調用webservice伺服器操作異常
安裝Eclipse-jee,下載Axis2的最新版本Axis2 1.4.1 Release,其內部結構為 開發前配置:在Eclipse的菜單欄中,Window --> Preferences --> Web Service --> Axis2 Perferences,在Axis2 runtime location中選擇Axis2解壓縮包的位置,設置好後,點"OK"即行。 新建一個Java Project,命名為"WS_01",在"WS_01"項目上new --> other,找到"Web Services"下面的"Web Service"; 在出現的Web Services對象框,在Service implementation中點擊"Browse",進入Browse Classes對象框,查找到我們剛才寫的寫的CalculateService類。(如下圖)。點擊"ok",則回到 Web Service話框。 在Web Service對話框中,將Web Service type中的滑塊,調到"start service「的位置,將Client type中的滑塊調到"Test client"的位置。 在Web Service type滑塊圖的右邊有個"Configuration",點擊它下面的選項,進入Service Deployment Configuration對象框,在這里選擇相應的Server(我這里用Tomcat6.0)和Web Service runtime(選擇Apache Axis2) 點OK後,則返回到Web Service對話框,同理,Client type中的滑塊右邊也有"Configuration",也要進行相應的置,步驟同上。完成後,Next --> next即行。到了Server startup對話框,有個按鍵"start server",點擊它,則可啟動Tomcat伺服器了。 等啟完後,點擊"next -- > next",一切默認即行,最後,點擊完成。最後,出現如下界面:(Web Service Explorer),我們在這里便可測試我們的Web服務。 測試比較簡單,例如,我們選擇一個"plus"的Operation,出現下圖,在x的輸入框中輸入2,在y的 輸入框中輸入3,點擊"go",便會在status欄中顯示結果5.0。其他方法的測試也類似。