1. java 調用 .net web service 問題
.java作為web service 的客戶端去調用 .Net Web Service的服務端;
開發中遇到的問題及其解決辦法有如下
1)java和.net 的默認namespace問題;
解決方案: java:http://tempuri.org
.net :http://tempuri.org/
區別就是符號「/」;如果不帶「/」產生的結果會出錯;
問題解決:統一加上「/」;
2)兩者產生的SOAP文件格式不一致,有三種,Microsoft的;IBM的,通過抓包工具可以獲得java產生的Soap消息
解決方案:SOAP 消息頭問題,從上面抓包的信息可以看出:請求的是<soapenv:Envelope 而response的是<soap:Envelope
這是由於不同的服務商封裝成的不同格式的soap ,但都是遵循SOAP,可以通用;
Microsoft的是 <soap:Envelope ,而IBM的是 <soapenv:Envelope ;
3)入參的數據類型會影響調用的正確性;
解決方案:
第二個參數的入參是long型。如果修改make1方法的String 型成 long 型,則程序異常;
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
faultSubcode:
faultString: System.Web.Services.Protocols.SoapException: Server was unable to read request. ---> System.InvalidOperationException: There is an error in XML document (1, 440). ---> System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Xml.XmlConvert.ToInt64(String s)
其實我們只需要在參數設置裡面設成org.apache.axis.encoding.XMLType.XSD_LONG;
2. java調用asmx亂碼
可以調用的
在Java語言中,調用方法有三種方式。:亮梁
第一種信鍵沒:通過對象名.方法名進行滑納調用,這是最普通的也是最常見的一種調用方式。
第二種:通過new關鍵字調用構造方法,這種是在實例化對象時使用的方式。
第三種:通過類名.方法名調用,當需要調用的那個方法為靜態(有static的)方法時使用。
3. JAVA調用.net寫的webservice介面asmx
返回一個json 格式的字元串給你,你就好處理了
4. 急!java調用webservice並解析返回值,重謝!!
您好,提問者:
解析XML可以使用dom4j技術。
參考版資料:權http://www.cnblogs.com/CheeseZH/archive/2012/11/28/2791914.html
5. java調用webservice介面具體怎麼調用
使用HttpClient
用到的jar文件:commons-httpclient-3.1.jar
方法:
預先定義好Soap請求數據,可以藉助於XMLSpy Professional軟體來做這一步生成。
String soapRequestData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">" +
"<soap12:Body>" +
" <getCountryCityByIp xmlns=\"http://WebXml.com.cn/\">" +
" <theIpAddress>219.137.167.157</theIpAddress>" +
" </getCountryCityByIp>" +
" </soap12:Body>" +
"</soap12:Envelope>";
然後定義一個PostMethod,這時需要指定web服務的Url;
PostMethod postMethod = new PostMethod(「http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx」);
然後把Soap請求數據添加到PostMethod中
byte[] b = soapRequestData.getBytes("utf-8");
InputStream is = new ByteArrayInputStream(b,0,b.length);
RequestEntity re = new InputStreamRequestEntity(is,b.length,"application/soap+xml; charset=utf-8");
postMethod.setRequestEntity(re);
最後生成一個HttpClient對象,並發出postMethod請求
HttpClient httpClient = new HttpClient();
statusCode = httpClient.executeMethod(postMethod);
String soapRequestData = postMethod.getResponseBodyAsString();
soapRequestData就是調用web服務的Soap響應數據,是xml格式的,可以通過解析soapRequestData來獲得調用web服務的返回值。
6. java調用asmx介面
很多朋友都想知道java asmx是什麼?如何調用asmx介面?下面就一起來了解一下吧~
webservice的.asmx是一個平台獨立的,低耦合的、基於可編程的web的應用程序,可使用開放的XML(標准通用標記語言下的一個子集)更加標准來描述、發布、發現、協調和配置這些應用程序,用於開發分布式的交互操作的應用程序。
.asmx是webservice服務程序的後綴名,ASP.NET 使用.asmx 文件來對Web Services的支持。.asmx 文件和.aspx文件一樣都屬於文本文件。它包含在.aspx文件之中,成為ASP.NET應用程序的一部分。
commons-httpclient commons-httpclient 搭漏 3.1
工具類
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.SimpleHttpConnectionManager; import org.apache.commons.httpclient.methods.PostMethod; import java.io.IOException; import java.util.Map; public class SoapUtil { public static String callSoap(String url,String method, Map paramMap) throws IOException { // 輸入服務網址 HttpClient client = new HttpClient(); PostMethod post = new PostMethod(url+"/"+method); // 設置參數 if (paramMap != null) { for (Map.Entry item : paramMap.entrySet()) { String key = item.getKey(); String value = item.getValue(); System.out.println(key + ":" + value); post.setParameter(key, value); } } // client.setTimeout(newTimeoutInMilliseconds); // 執行,返回一個結果碼 int code = client.executeMethod(post); System.out.println("結果碼:" + code); // 獲取xml結果 String result = post.getResponseBodyAsString(); System.out.println("結果:" + result); // 釋放連接 post.releaseConnection(); // 關知銷爛閉連接 斗衫 ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown(); return result; } }
調用 public static void main(String[] args) throws Exception { Map paramMap = new HashMap(); paramMap.put("id", "10086"); paramMap.put("name", "老李"); SoapUtil.callSoap("http://120.79.xxx.xxx:1234/aaaa.asmx", "調用的方法", paramMap); }
7. java 怎樣調用c#提供的webservice介面
Java調用代碼C#寫的webservice例子:
/**
* @param:strTaskID 任務id
* @param:iDowloadType: 下載類型。0:ALL,1:日誌,2:腳本
* @param:bIncludeDeleted: 是否包含已經刪除的記錄
* @return file object of log
* 2015年11月25日上午11:08:48
*/
public static String downloadTestLogsByTaskID(String strTaskID,String iDowloadType,boolean bIncludeDeleted){
File result = null;
try{
Service service = new Service();
Call call = (Call) service.createCall();
call.setOperationName(new QName("", "GetTestQuestions"));
call.addParameter("strTaskID", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("iDowloadType", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("bIncludeDeleted", XMLType.XSD_BOOLEAN, ParameterMode.IN);
call.setTargetEndpointAddress(new URL("http://WebService/SuperTPA/DownloadTestLogsByTaskID"));
result = (File) call.invoke(new Object[] { strTaskID, iDowloadType,bIncludeDeleted});
}catch(Exception e){
e.printStackTrace();
}
return result;
}
public static void main(String args[]){
System.out.println(downloadTestLogsByTaskID("123456","1",true));
}
8. Java調用asmx(webService)報錯Unrecognized Windows Sockets error: 5: socket write error
這個和JAVA的兼容不此祥察是太好,建議按POST XML 的方式調用。打開asmx的網宴滑址,會有提示如何POST XML的森茄。
9. 怎樣在java 中調用web service 傳入參數返回xml
js 代碼
function ajaxRequest()
{
var url = "http://********.asmx";
//設置webService傳入參數
//
//注意:
//
// 調用.Net 寫的webservice(如例子中的webservicedemo.asmx)
// HelloTo(String name) 針對name參數必須寫成 <name></name>wqj,還有更多參數一樣寫,使用名稱匹配
// 傳入的參數數量可以不等於(多於或少於)方法要求的參數
//
// 調用java(xfire) 發布的webService
// 傳入的參數必須與調用方法的參數數量相等,且按傳入值的順序進行匹配
//
var para = "<name></name>wqj"; 這里應該是一個標準的xml形式,源碼貼出來時被慮掉了,請參看附件源碼
var op = {
data:para,
onComplete: showResponse,
onFailure:showError,
update:'ajaxBack'
};
var service = new WebService(url,"HelloTo",op);
service.request();
return false;
}
function showError(obj)
{
//obj 是一個xmlHttpRequest對象
alert("error");
}
function showResponse(requestText,requestXML)
{
//requestText 返回的文本
//requestXML 返回的XML
alert("ok");
}
10. java如何調用webservice介面
Java通過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;
public class caClient {
public static void main(String[] args) {
try {
String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";
//直接引用遠程的wsdl文件
//以下都是套路
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("addUser");//WSDL裡面描述的介面名稱
call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,
javax.xml.rpc.ParameterMode.IN);//介面的參數
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//設置返回類型
String temp = "測試人員";
String result = (String)call.invoke(new Object[]{temp});
//給方法傳遞參數,並且調用方法
System.out.println("result is "+result);
}
catch (Exception e) {
System.err.println(e.toString());
}
}
}