Java 访问 .net WebService 接口示例
A.XML Code:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<KytSoapHeader xmlns="http://www.kyt56.cn/">
<UserName>admin</UserName>
<PassWord>admin</PassWord>
</KytSoapHeader>
</soap:Header>
<soap:Body>
<GetDeliveryListByStatus xmlns="http://www.kyt56.cn/" />
</soap:Body>
</soap:Envelope>
第一种方式,普通访问网页的方式
JavaCode:
public static void main(String[] args) {
try {
String urlString = "http://localhost:8090/ws/DeliveryList.asmx";
String xmlFile = "d:\\A.XML";
String soapActionString = "http://www.kyt56.cn/GetDeliveryListByStatus";
File fileToSend = new File(xmlFile);
byte[] buf = new byte[(int) fileToSend.length()];
new FileInputStream(xmlFile).read(buf);
URL url = new URL(urlString);
HttpURLConnection httpConn = (HttpURLConnection) url
.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Length", String
.valueOf(buf.length));
httpConn.setRequestProperty("Content-Type",
"text/xml; charset=utf-8");
httpConn.setRequestProperty("SOAPAction", soapActionString);
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
OutputStream out = httpConn.getOutputStream();
out.write(buf);
out.close();
InputStreamReader isr = new InputStreamReader(httpConn
.getInputStream(), "utf-8");
BufferedReader in = new BufferedReader(isr);
String inputLine;
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("D:\\result.xml")));
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine.replaceAll("><", ">\n<"));
bw.write(inputLine);
bw.newLine();
}
bw.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
第二种方式,java内置soap访问方式
JavaCode
package soap;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
public class SOAPMain {
public static void main(String[] args) {
String url = "http://localhost:8090/ws/DeliveryList.asmx";
String SOAPAction ="http://www.kyt56.cn/GetDeliveryListByStatus";
String UserName="sadf";
String PassWord="asdf";
try {
// 设置SOAP内容格式
String soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
+ "<soap:Header /><soap:Body /></soap:Envelope>";
InputStream is = new ByteArrayInputStream(soap.getBytes("UTF-8"));
// 创建message对象
MessageFactory mf =MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
SOAPMessage message = mf.createMessage(null, is);
// 设置SOAPAction
message.getMimeHeaders().addHeader("SOAPAction",SOAPAction);
//设置请求字符格式
message.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "utf-8");
// 获取envelope
SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
// 设置 header KytSoapHeader 用户名和密码
SOAPHeader header = envelope.getHeader();
SOAPElement headerElement = header.addChildElement(envelope
.createName("KytSoapHeader","", "http://www.kyt56.cn/"));
headerElement.addChildElement("UserName").addTextNode(UserName);
headerElement.addChildElement("PassWord").addTextNode(PassWord);
//设置Body
SOAPBody body = envelope.getBody();
// 保存Message
message.saveChanges();
//开始访问接口
//创建连接对象
SOAPConnection connection = SOAPConnectionFactory.newInstance().createConnection();
//发送请求
SOAPMessage reply = connection.call(message, url);
//关闭连接对象
connection.close();
//访问结束开始处理结果
//获取节点 KYTResults
org.w3c.dom.Node node = reply.getSOAPBody().getFirstChild().getFirstChild().getFirstChild();
System.out.println("Node Name:"+node.getLocalName()+"\n");
System.out.println("Node Text:"+node.getTextContent());
//System.out.println(((SOAPElement)reply.getSOAPBody().getChildElements().next()).getTextContent());
System.out.println("\nResponse Content:");
//将读取的内容读出来
ByteArrayOutputStream out= new ByteArrayOutputStream();
reply.writeTo(out);
InputStreamReader isr = new InputStreamReader(new ByteArrayInputStream(out.toByteArray()), "utf-8");
BufferedReader br = new BufferedReader(isr);
while (br.ready()) {
//String inputLine;
System.out.println(br.readLine().replaceAll("><", ">\n<"));
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
以下是使用Java访问.NET Web服务并处理Cookie的一个基本示例: 1. 首先,确保已经生成了Web服务的客户端代理类。假设服务接口名为`LinkWebServiceService`,服务端点接口为`LinkWebServicePortType`。 2. 创建`...
Java访问.Net Webservice的过程大致分为以下步骤: 1. **创建SOAP请求**:首先,我们需要构建一个符合SOAP规范的XML消息,这个消息包含了调用的Web方法名、参数等信息。例如,如果我们有一个名为`GetGreeting`的...
- **了解 WebService 接口**:首先,你需要访问 WebService 提供的 WSDL(Web Service Description Language)文件,了解服务的接口、方法和参数。例如,`http://www.wopos.com/webservice/Weather.asmx?wsdl`。 ...
标签中的".net webservice 接口 源代码"表明,压缩包可能包含了示例代码,供学习者参考和实践。你可以根据提供的源代码,分析其工作原理,了解具体实现细节,包括请求构造、数据封装、错误处理等。 总的来说,调用...
- 创建实例并调用生成的Java接口上的方法来访问Web服务。 7. **注意事项**: - 需要确保使用的JAX-WS版本与.NET Web服务兼容。 - 跨域调用可能需要配置额外的安全策略,例如添加信任的证书或者设置正确的SOAP头。...
call.setTargetEndpointAddress(new java.net.URL(wsdlUrl)); // 设置操作名称 call.setOperationName(new QName(namespace, "GetSafeMode")); // 设置参数和返回类型 call.addParameter(new QName(namespace, ...
【Java与.NET的Web服务调用详解】 在分布式系统中,Web服务作为一种标准的通信机制,使得不同平台、不同语言的应用程序能够相互通信。本文将深入探讨Java和.NET之间如何进行Web服务调用,帮助开发者理解这两种技术...
在提供的"WebServiceDemo"压缩包中,可能包含了Java客户端调用.NET WebService的示例代码。分析这些代码可以帮助我们更好地理解上述步骤,并实际操作Java调用.NET WebService的过程。 总结起来,Java调用.NET的Web...
在提供的资源中,“web service_demo.rar”可能是.NET Web Service的示例代码或部署文件,“cilentDemo.rar”可能是Java客户端的示例代码,“Java调用webservice类的方法.txt”可能包含了具体的Java调用步骤或代码...
1. **理解WebService接口**:.NET WebService通常以WSDL(Web Services Description Language)的形式提供其接口定义。WSDL文件描述了服务的地址、操作、输入和输出参数等。Java Axis可以通过这个WSDL文件自动生成...
3. **获取WebService接口信息**:包括WebService的URL、命名空间、方法名以及所需的参数等。 #### 三、KSOAP2简介 KSOAP2是一个用于Android平台的SOAP客户端库,它简化了Android应用与WebService之间的交互过程。...
- Java中可以通过`java.net.HttpURLConnection`或者第三方库如Apache HttpClient来发送SOAP请求。 - 构建SOAP消息的方式与VB.NET类似,但需要注意字符串转义的不同,例如在Java中XML的双引号需要用`\"`来表示。 -...
在.NET开发环境中,有时我们需要与Java应用程序进行交互,特别是通过Web服务进行数据交换。本文将深入探讨如何使用POST方式在.NET中调用.NET和Java编写的Web服务,并以XML作为请求数据格式。以下是对这个主题的详细...
在压缩包中的`request.NetwsClient`可能是生成的Java客户端代码、配置文件或者示例调用代码。打开这个文件,根据其内容进一步了解或调整客户端的具体实现。 总结,通过Apache Axis2,我们可以轻松地在Java环境中...
`HttpURLConnection`是Java `java.net`包中的一个类,它提供了HTTP协议的连接、读写功能。相比于常用的`HttpClient`,`HttpURLConnection`具有更好的性能和资源管理,是Android官方推荐的网络通信方式。通过`...
Java程序调用.NET/C#的Web服务是一种跨平台的交互方式,主要依赖于SOAP(Simple Object Access Protocol)协议,使得不同编程语言开发的应用程序能够相互通信。在本场景中,用户已经提供了一个.NET的Web服务,而我们...
本示例项目“Android访问.NET的WebService”提供了一种方法,让Android客户端能够调用.NET Web服务并处理返回的数据。以下是这个示例的关键知识点和实现步骤。 1. **SOAP协议**:Android通过SOAP(Simple Object ...
接下来,我们将创建一个简单的示例,演示如何调用ASP.NET WebService。假设我们有一个名为`MyWebService`的服务,其中有一个名为`GetGreeting`的方法,该方法接收一个字符串参数并返回一个问候。 1. **初始化Soap...
本示例介绍的是如何使用Java来访问由C#编写的WebService服务。WebService是一种基于互联网的、平台无关的通信机制,它允许不同系统间的应用程序通过网络进行交互。 首先,我们需要理解WebService的基本原理。...
在Java编程环境中,有时我们需要与.NET平台上的服务进行交互,比如调用.NET WebService接口来获取或处理数据。本教程将详细介绍如何在Java中实现这一功能,并提供一个实际的调用示例,以及所需的jar包。 一、Java...