Java通过WSDL文件来调用webservice直接调用模式如下:
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())
}
}
}
1.打开webService链接,右键属性—》证书—》详细信息—》复制到文件,保存cer格式的文件。2. 复制下面的cmd命令,执行keytool命令,生成keystore文件,例如
c:\nciic.keystore
keytool -import -alias nciic -file c:\jswszx.cer -keystore c:\nciic.keystore
它会提示输入密码,随便输入,例如:123456,回车
4.他会提示是否信任这个认证,输入Y,回车,指定目录下就会生成nciic.keystore文件
它会提示输入密码,随便输入,例如:123456,回车
4.他会提示是否信任这个认证,输入Y,回车,指定目录下就会生成nciic.keystore文件
5.修改Java代码
在调用接口方法之前,添加如下代码:
System.setProperty("javax.NET.ssl.trustStore","c://nciic.keystore")System.setProperty("java.protocol.handler.pkgs","com.sun.Net.ssl.internal.www.protocol")
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
WebService可以有Get、 Post、Soap、Document四种方式调用,以下Java通过post方式调用WebService代码:
import java.io.BufferedReaderimport java.io.IOException
import java.io.InputStream
import java.io.InputStreamReader
import java.io.OutputStream
import java.io.OutputStreamWriter
import java.net.URL
import java.net.URLConnection
import java.net.URLEncoder
import org.apache.cxf.endpoint.Client
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory
/**
* 功能描述:WebService调用
*
*/
public class ClientTest {
/**
* 功能描述:HTTP-POST
*
*/
public String post() {
OutputStreamWriter out = null
StringBuilder sTotalString = new StringBuilder()
try {
URL urlTemp = new URL(
"http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity")
URLConnection connection = urlTemp.openConnection()
connection.setDoOutput(true)
out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8")
StringBuffer sb = new StringBuffer()
sb.append("byProvinceName=福建")
out.write(sb.toString())
out.flush()
String sCurrentLine
sCurrentLine = ""
InputStream l_urlStream
l_urlStream = connection.getInputStream()// 请求
BufferedReader l_reader = new BufferedReader(new InputStreamReader(
l_urlStream))
while ((sCurrentLine = l_reader.readLine()) != null) {
sTotalString.append(sCurrentLine)
}
} catch (Exception e) {
e.printStackTrace()
} finally {
if (null != out) {
try {
out.close()
} catch (IOException e) {
e.printStackTrace()
}
}
}
return sTotalString.toString()
}
}