测试跑通。
========
package comflyfoxclient;
import orgapacheaxisclientCall;
import orgapacheaxisclientService;
public class HelloWorldServiceClient {
public static void main(String[] args) throws Exception {
Service service = new Service();
try {
Call call = (Call) servicecreateCall();
call
setTargetEndpointAddress(" 1721619273:8080/np-fy-ajpc/services/ajpcTjpcServicewsdl");
callsetOperationName("tjpcProcess");
calladdParameter(
"xmlParam", //设置要传递的参数
orgapacheaxisencodingXMLTypeXSD_STRING,
javaxxmlrpcParameterModeIN);
callsetReturnType(orgapacheaxisencodingXMLTypeXSD_STRING);
// callsetTimeout(5000);
callsetUseSOAPAction(true);
call
setSOAPActionURI(" /tjpcProcess");
String result = (String) call
invoke(new Object[] { "<QueryParam NAjlb='1' NSpcx='2' CBhAj='6A10F8068A8015310BA2887DEFFC8960' NSyfy='1'></QueryParam>" });
Systemoutprintln(result);
} catch (Exception ex) {
exprintStackTrace();
}
}
}Java调用WebService可以直接使用Apache提供的axisjar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自动生成代码省事些。
1、编写代码方式:
package comyuduntest;
import javarmiRemoteException;
import orgapacheaxisclientCall;
import orgapacheaxisclientService;
import orgapacheaxismessagePrefixedQName;
import orgapacheaxismessageSOAPHeaderElement;
import comcezannegoldenuserException;
import comcezannegoldenuserUserManagerServiceProxy;
import javaxxmlnamespaceQName;
import javanetMalformedURLException;
import javaxxmlrpcServiceException;
import javaxxmlsoapName;
import javaxxmlsoapSOAPException;
public class testWebService {
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException
{
//标识Web Service的具体路径
String endpoint = "WebService服务地址";
// 创建 Service实例
Service service = new Service();
// 通过Service实例创建Call的实例
Call call = (Call) servicecreateCall();
//将Web Service的服务路径加入到call实例之中
callsetTargetEndpointAddress( new javanetURL(endpoint) );//为Call设置服务的位置
// 由于需要认证,故需要设置调用的SOAP头信息。
Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") );
orgapacheaxismessageSOAPHeaderElement header = new SOAPHeaderElement(headerName);
headeraddTextNode( "blablabla" );
calladdHeader(header);
// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");
// soapHeaderElementsetNamespaceURI("发布的wsdl里的targetNamespace里的url");
// try
// {
// soapHeaderElementaddChildElement("string_itemName")setValue("blablabla");
// }
// catch (SOAPException e)
// {
// eprintStackTrace();
// }
// calladdHeader(soapHeaderElement);
//调用Web Service的方法
orgapacheaxisdescriptionOperationDesc oper;
orgapacheaxisdescriptionParameterDesc param;
oper = new orgapacheaxisdescriptionOperationDesc();
opersetName("opName");
param = new orgapacheaxisdescriptionParameterDesc(new javaxxmlnamespaceQName("", "arg0"), orgapacheaxisdescriptionParameterDescIN, new javaxxmlnamespaceQName(">下面我们就拿一个简单的天气预报接口。先把天气预报接口的地址输入地址栏:会出现一些带有链接的方法名和参数说明之类的。看完之后,然后进链接可以看到测试,可以先把我们想测试的参数写进去,点击调用,会出现一个xml文件,这些就是得到的结果,依情况而定我们出把结果处理成我们想要的就可以了。
下面说一下怎么在项目中调用:新建一个web项目,然后点击添加引用服务如图,然后点击确定。
这样就会发现在webconfig文件里面多了一下节点,而且项目类中的Service
References文件件多了一个绿色的东西。可以点击看看他有哪些方法,应该是和我们在浏览器输入链接的方法是一致的,剩余就是怎么调用了。下面给出具体的代码:本代码值在webForm中先添加Lable、TextBox、Button以及Literal各一个。然后点击按钮。
protected void Button1_Click(object sender, EventArgs e)
{
if (!stringIsNullOrEmpty(thisTextBox1Text))
{
WeatherServiceWeatherWebServiceSoapClient service = new WeatherServiceWeatherWebServiceSoapClient();
String[] strWeatherInfo = servicegetWeatherbyCityName(thisTextBox1Text);
StringBuilder str = new StringBuilder("");
strAppendLine("您查看天气信息如下:");
foreach (string info in strWeatherInfo)
{
strAppendLine(info+"<br/>");
}
thisLiteral1Text =strToString();
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)