首页编程java调用webservice java如何调用webservice接口

java调用webservice java如何调用webservice接口

编程之家2023-11-01225次浏览

朋友们,你是否曾想过深入了解java调用webservice和java如何调用webservice接口的内涵?在本文中,我将为你详细解析这两个话题,希望能给你带来全新的视角和思考。

java调用webservice java如何调用webservice接口

java如何实现使用HTTP POST 的方式调用webservice

packagecom.weixin.util;

importjava.io.BufferedReader;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.io.StringWriter;

java调用webservice java如何调用webservice接口

importjava.io.UnsupportedEncodingException;

importjava.util.ArrayList;

importjava.util.List;

importjava.util.Map;

importorg.apache.http.Header;

importorg.apache.http.HttpHost;

java调用webservice java如何调用webservice接口

importorg.apache.http.HttpResponse;

importorg.apache.http.HttpStatus;

importorg.apache.http.HttpVersion;

importorg.apache.http.ParseException;

importorg.apache.http.client.ClientProtocolException;

importorg.apache.http.client.HttpClient;

importorg.apache.http.client.entity.UrlEncodedFormEntity;

importorg.apache.http.client.methods.HttpGet;

importorg.apache.http.client.methods.HttpPost;

importorg.apache.http.client.params.CookiePolicy;

importorg.apache.http.client.params.HttpClientParams;

importorg.apache.http.conn.params.ConnRoutePNames;

importorg.apache.http.impl.client.DefaultHttpClient;

importorg.apache.http.message.BasicNameValuePair;

importorg.apache.http.params.BasicHttpParams;

importorg.apache.http.params.HttpConnectionParams;

importorg.apache.http.params.HttpParams;

importorg.apache.http.params.HttpProtocolParams;

importorg.apache.http.protocol.HTTP;

//importbsh.ParseException;

importcom.google.gson.Gson;

/**

*TODO

*@Version1.0

*/

publicclassHttpClients{

/**UTF-8*/

privatestaticfinalStringUTF_8="UTF-8";

/**日志记录tag*/

privatestaticfinalStringTAG="HttpClients";

/**用户host*/

privatestaticStringproxyHost="";

/**用户端口*/

privatestaticintproxyPort=80;

/**是否使用用户端口*/

privatestaticbooleanuseProxy=false;

/**连接超时*/

privatestaticfinalintTIMEOUT_CONNECTION=60000;

/**读取超时*/

privatestaticfinalintTIMEOUT_SOCKET=60000;

/**重试3次*/

privatestaticfinalintRETRY_TIME=3;

/**

*@paramurl

*@paramrequestData

*@return

*/

publicStringdoHtmlPost(HttpClienthttpClient,HttpPosthttpPost)

{

StringresponseBody=null;

intstatusCode=-1;

try{

HttpResponsehttpResponse=httpClient.execute(httpPost);

HeaderlastHeader=httpResponse.getLastHeader("Set-Cookie");

if(null!=lastHeader)

{

httpPost.setHeader("cookie",lastHeader.getValue());

}

statusCode=httpResponse.getStatusLine().getStatusCode();

if(statusCode!=HttpStatus.SC_OK){

System.out.println("HTTP"+""+"HttpMethodfailed:"+httpResponse.getStatusLine());

}

InputStreamis=httpResponse.getEntity().getContent();

responseBody=getStreamAsString(is,HTTP.UTF_8);

}catch(Exceptione){

//发生网络异常

e.printStackTrace();

}finally{

// httpClient.getConnectionManager().shutdown();

// httpClient=null;

}

returnresponseBody;

}

/**

*

*发起网络请求

*

*@paramurl

*URL

*@paramrequestData

*requestData

*@returnINPUTSTREAM

*@throwsAppException

*/

publicstaticStringdoPost(Stringurl,StringrequestData)throwsException{

StringresponseBody=null;

HttpPosthttpPost=null;

HttpClienthttpClient=null;

intstatusCode=-1;

inttime=0;

do{

try{

httpPost=newHttpPost(url);

httpClient=getHttpClient();

//设置HTTPPOST请求参数必须用NameValuePair对象

List<BasicNameValuePair>params=newArrayList<BasicNameValuePair>();

params.add(newBasicNameValuePair("param",requestData));

UrlEncodedFormEntityentity=newUrlEncodedFormEntity(params,HTTP.UTF_8);

//设置HTTPPOST请求参数

httpPost.setEntity(entity);

HttpResponsehttpResponse=httpClient.execute(httpPost);

statusCode=httpResponse.getStatusLine().getStatusCode();

if(statusCode!=HttpStatus.SC_OK){

System.out.println("HTTP"+""+"HttpMethodfailed:"+httpResponse.getStatusLine());

}

InputStreamis=httpResponse.getEntity().getContent();

responseBody=getStreamAsString(is,HTTP.UTF_8);

break;

}catch(UnsupportedEncodingExceptione){

time++;

if(time<RETRY_TIME){

try{

Thread.sleep(1000);

}catch(InterruptedExceptione1){

}

continue;

}

//发生致命的异常,可能是协议不对或者返回的内容有问题

e.printStackTrace();

}catch(ClientProtocolExceptione){

time++;

if(time<RETRY_TIME){

try{

Thread.sleep(1000);

}catch(InterruptedExceptione1){

}

continue;

}

//发生致命的异常,可能是协议不对或者返回的内容有问题

e.printStackTrace();

}catch(IOExceptione){

time++;

if(time<RETRY_TIME){

try{

Thread.sleep(1000);

}catch(InterruptedExceptione1){

}

continue;

}

//发生网络异常

e.printStackTrace();

}catch(Exceptione){

time++;

if(time<RETRY_TIME){

try{

Thread.sleep(1000);

}catch(InterruptedExceptione1){

}

continue;

}

//发生网络异常

e.printStackTrace();

}finally{

httpClient.getConnectionManager().shutdown();

httpClient=null;

}

}while(time<RETRY_TIME);

returnresponseBody;

}

/**

*

*将InputStream转化为String

*

*@paramstream

*inputstream

*@paramcharset

*字符集

*@return

*@throwsIOException

*/

privatestaticStringgetStreamAsString(InputStreamstream,Stringcharset)throwsIOException{

try{

BufferedReaderreader=newBufferedReader(newInputStreamReader(stream,charset),8192);

StringWriterwriter=newStringWriter();

char[]chars=newchar[8192];

intcount=0;

while((count=reader.read(chars))>0){

writer.write(chars,0,count);

}

returnwriter.toString();

}finally{

if(stream!=null){

stream.close();

}

}

}

/**

*得到httpClient

*

*@return

*/

publicHttpClientgetHttpClient1(){

finalHttpParamshttpParams=newBasicHttpParams();

if(useProxy){

HttpHostproxy=newHttpHost(proxyHost,proxyPort,"http");

httpParams.setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);

}

HttpConnectionParams.setConnectionTimeout(httpParams,TIMEOUT_CONNECTION);

HttpConnectionParams.setSoTimeout(httpParams,TIMEOUT_SOCKET);

HttpClientParams.setRedirecting(httpParams,true);

finalStringuserAgent="Mozilla/5.0(Windows;U;WindowsNT6.1;zh-CN;rv:1.9.2.14)Gecko/20110218Firefox/3.6.14";

HttpProtocolParams.setUserAgent(httpParams,userAgent);

HttpProtocolParams.setVersion(httpParams,HttpVersion.HTTP_1_1);

HttpClientParams.setCookiePolicy(httpParams,CookiePolicy.RFC_2109);

HttpProtocolParams.setUseExpectContinue(httpParams,false);

HttpClientclient=newDefaultHttpClient(httpParams);

returnclient;

}

/**

*

*得到httpClient

*

*@return

*/

privatestaticHttpClientgetHttpClient(){

finalHttpParamshttpParams=newBasicHttpParams();

if(useProxy){

HttpHostproxy=newHttpHost(proxyHost,proxyPort,"http");

httpParams.setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);

}

HttpConnectionParams.setConnectionTimeout(httpParams,TIMEOUT_CONNECTION);

HttpConnectionParams.setSoTimeout(httpParams,TIMEOUT_SOCKET);

HttpClientParams.setRedirecting(httpParams,true);

finalStringuserAgent="Mozilla/5.0(Windows;U;WindowsNT6.1;zh-CN;rv:1.9.2.14)Gecko/20110218Firefox/3.6.14";

HttpProtocolParams.setUserAgent(httpParams,userAgent);

HttpProtocolParams.setVersion(httpParams,HttpVersion.HTTP_1_1);

HttpClientParams.setCookiePolicy(httpParams,CookiePolicy.BROWSER_COMPATIBILITY);

HttpProtocolParams.setUseExpectContinue(httpParams,false);

HttpClientclient=newDefaultHttpClient(httpParams);

returnclient;

}

/**

*打印返回内容

*@paramresponse

*@throwsParseException

*@throwsIOException

*/

publicstaticvoidshowResponse(Stringstr)throwsException{

Gsongson=newGson();

Map<String,Object>map=(Map<String,Object>)gson.fromJson(str,Object.class);

Stringvalue=(String)map.get("data");

//StringdecodeValue=Des3Request.decode(value);

//System.out.println(decodeValue);

//logger.debug(decodeValue);

}

/**

*

*发起网络请求

*

*@paramurl

*URL

*@paramrequestData

*requestData

*@returnINPUTSTREAM

*@throwsAppException

*/

publicstaticStringdoGet(Stringurl)throwsException{

StringresponseBody=null;

HttpGethttpGet=null;

HttpClienthttpClient=null;

intstatusCode=-1;

inttime=0;

do{

try{

httpGet=newHttpGet(url);

httpClient=getHttpClient();

HttpResponsehttpResponse=httpClient.execute(httpGet);

statusCode=httpResponse.getStatusLine().getStatusCode();

if(statusCode!=HttpStatus.SC_OK){

System.out.println("HTTP"+""+"HttpMethodfailed:"+httpResponse.getStatusLine());

}

InputStreamis=httpResponse.getEntity().getContent();

responseBody=getStreamAsString(is,HTTP.UTF_8);

break;

}catch(UnsupportedEncodingExceptione){

time++;

if(time<RETRY_TIME){

try{

Thread.sleep(1000);

}catch(InterruptedExceptione1){

}

continue;

}

//发生致命的异常,可能是协议不对或者返回的内容有问题

e.printStackTrace();

}catch(ClientProtocolExceptione){

time++;

if(time<RETRY_TIME){

try{

Thread.sleep(1000);

}catch(InterruptedExceptione1){

}

continue;

}

//发生致命的异常,可能是协议不对或者返回的内容有问题

e.printStackTrace();

}catch(IOExceptione){

time++;

if(time<RETRY_TIME){

try{

Thread.sleep(1000);

}catch(InterruptedExceptione1){

}

continue;

}

//发生网络异常

e.printStackTrace();

}catch(Exceptione){

time++;

if(time<RETRY_TIME){

try{

Thread.sleep(1000);

}catch(InterruptedExceptione1){

}

continue;

}

//发生网络异常

e.printStackTrace();

}finally{

httpClient.getConnectionManager().shutdown();

httpClient=null;

}

}while(time<RETRY_TIME);

returnresponseBody;

}

}

怎么用Java通过wsdl地址调用WebService求代码

webservice使用说明书,就是wsdl.

wsdl说明是是基于xml格式的

通过wsdl说明书,就可以完整的描述一个服务端对外发布的服务

生成客户端调用代码:语法1: wsimport-s. wsdl说明书地址语法2:wsimport-keep-p包名称 wsdl说明书地址

直接用cmd控制调用上面代码,把生成的代码直接复制到你的项目中,就可以使用了

详细的可以参考这个

网页链接

java如何调用webservice接口

Java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自动生成代码省事些。

1、编写代码方式:

package com.yudun.test;

import java.rmi.RemoteException;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.message.PrefixedQName;

import org.apache.axis.message.SOAPHeaderElement;

import com.cezanne.golden.user.Exception;

import com.cezanne.golden.user.UserManagerServiceProxy;

import javax.xml.namespace.QName;

import java.net.MalformedURLException;

import javax.xml.rpc.ServiceException;

import javax.xml.soap.Name;

import javax.xml.soap.SOAPException;

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) service.createCall();

//将Web Service的服务路径加入到call实例之中.

call.setTargetEndpointAddress( new java.net.URL(endpoint));//为Call设置服务的位置

//由于需要认证,故需要设置调用的SOAP头信息。

Name headerName= new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url","string_itemName"));

org.apache.axis.message.SOAPHeaderElement header= new SOAPHeaderElement(headerName);

header.addTextNode("blablabla");

call.addHeader(header);

// SOAPHeaderElement soapHeaderElement= new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url","SoapHeader");

// soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");

// try

//{

// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");

//}

// catch(SOAPException e)

//{

// e.printStackTrace();

//}

// call.addHeader(soapHeaderElement);

//调用Web Service的方法

org.apache.axis.description.OperationDesc oper;

org.apache.axis.description.ParameterDesc param;

oper= new org.apache.axis.description.OperationDesc();

oper.setName("opName");

param= new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("","arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"), java.lang.String.class, false, false);

param.setOmittable(true);

oper.addParameter(param);

param= new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("","arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"), java.lang.String.class, false, false);

param.setOmittable(true);

oper.addParameter(param);

param= new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("","arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"), java.lang.String.class, false, false);

param.setOmittable(true);

oper.addParameter(param);

oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"));

oper.setReturnClass(java.lang.String.class);

oper.setReturnQName(new javax.xml.namespace.QName("","return"));

oper.setStyle(org.apache.axis.constants.Style.WRAPPED);

oper.setUse(org.apache.axis.constants.Use.LITERAL);

oper.addFault(new org.apache.axis.description.FaultDesc(

new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url","Exception"),

"Exception",

new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url","Exception"),

true

));

call.setOperation( oper);

call.setOperationName(new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url","opName"));

//调用Web Service,传入参数

String res=( String) call.invoke( new Object[]("arg0","arg1"));

System.out.println("===============");

return res;

}

/**

*@param args

*/

public static void main(String[] args){

try{

System.out.println(getResult());

} catch(MalformedURLException e){

e.printStackTrace();

} catch(RemoteException e){

e.printStackTrace();

} catch(ServiceException e){

e.printStackTrace();

} catch(SOAPException e){

e.printStackTrace();

}

}

}

2、利用Eclipse自动生成WebService client代码就容易多了:(由于还不会发图片,就用语言描述了,大家酬和看吧。。。)

首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击Finish

这样,WebService Client代码已经生成好了。

接下来写一个Test类,在main函数中输入如下代码:

String endpoint="服务器的WebService的地址";

YourWebServiceNameProxy umsp= new YourWebServiceNameProxy(endpoint);

try{

String resultStr= umsp.opMethod("arg0","arg1");

System.out.println(resultStr);

} catch(Exception e){

System.out.println("异常");

e.printStackTrace();

} catch(RemoteException e){

System.out.println("RemoteException异常");

e.printStackTrace();

}

如果还有疑问的话还有视频,如果对你有帮助请采纳!

感谢您花时间阅读本文!我们希望通过对java调用webservice的问题进行探讨,为您提供了一些有用的见解和解决方案。如果您需要更多帮助或者有其他疑问,请不要犹豫与我们联系。

专业网站制作公司 网站制作公司哪家好传奇 服务器端,传奇世界私服服务器是什么...详细点