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());
}
}
}