JAVA调用C#编写的WebService

本文介绍了一个使用SOAP协议实现的登录服务调用方法。该方法通过发送包含用户名和密码的SOAP请求来验证用户身份,并接收返回的结果及令牌。
package com.kingdee.logincheck;

public class InvokeLoginWebService {

	private static final String SOAP_URL = "http://192.168.0.1/Ws404/WebServiceCore.asmx";
	private static final String SOAP_ACTION = "http://tempuri.org/Login";

	public static String[] login(String userName, String password)
			throws Exception {

		java.net.URL url = new java.net.URL(SOAP_URL);
		java.net.URLConnection connection = url.openConnection();
		java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connection;
		
		byte[] b = getInputXML(userName, password).getBytes();

		// Set the appropriate HTTP parameters.
		httpConn.setRequestProperty("Content-Length", String.valueOf(b.length));
		httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
		httpConn.setRequestProperty("SOAPAction", SOAP_ACTION);
		httpConn.setRequestMethod("POST");
		httpConn.setDoOutput(true);
		httpConn.setDoInput(true);

		java.io.OutputStream outStm = httpConn.getOutputStream();
		outStm.write(b);
		outStm.close();

		java.io.InputStreamReader isrStm = new java.io.InputStreamReader(
				httpConn.getInputStream());
		java.io.BufferedReader inStm = new java.io.BufferedReader(isrStm);
		String inputLine;
		inputLine = inStm.readLine();
		inStm.close();
		if (inputLine == null) {
			return null;
		}
		String res = inputLine.substring(inputLine.indexOf("<Result>")
				+ "<Result>".length(), inputLine.indexOf("</Result>"));

		String token = "";
		if (inputLine.indexOf("<Token>") >= 0) {
			token = inputLine.substring(inputLine.indexOf("<Token>")
					+ "<Token>".length(), inputLine.indexOf("</Token>"));
		}

		return new String[] { res, token };
	}

	private static String getInputXML(String userName, String password) {

		StringBuffer sb = new StringBuffer();
		sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
		sb.append("<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/\">");
		sb.append("<soap:Body><Login xmlns=\"http://tempuri.org/\">");
		sb.append("<userName>").append(userName).append("</userName>");
		sb.append("<password>").append(password).append("</password>");
		sb.append("</Login></soap:Body></soap:Envelope>");
		return sb.toString();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值