1.使用客戶端生成代碼
- a.在命令行或終端使用wsimport生成客戶端的調(diào)用
wsimport
-s xxx http:
xxx為本地存放生成代碼的目錄
- b.使用生成代碼調(diào)用WebService服務(wù)端
WeatherInterfaceImplService s=
new WeatherInterfaceImplService();WeatherInterfaceImpl weatherInterfaceImplPort = s.getWeatherInterfaceImplPort();weatherInterfaceImplPort.queryWeather(
"dasd");
2.使用JAXWS標(biāo)準(zhǔn)方法(Service)調(diào)用
- a.在命令行或終端使用wsimport生成客戶端的調(diào)用
- b.在命令行或終端使用wsimport生成客戶端的調(diào)用
URL wsdldocument=
new URL(
"http://127.0.0.1:54321/weathers?wsdl");QName qName=
new QName(
"http://nio/",
"WeatherInterfaceImplService");Service service =Service.create(wsdldocument, qName);WeatherInterfaceImpl port = service.getPort(WeatherInterfaceImpl.
class);port.queryWeather(
"廣東");
3.模擬http客戶端調(diào)用webservice服務(wù)
使用HttpURLConnection或apache的Httpclient模擬http請求,調(diào)用webservice。
注意:使用此方法不需要生成客戶端調(diào)用代碼。
下面是一個例子供大家參考、
package nioimport java
.io.File
import java
.io.FileInputStream
import java
.io.IOException
import java
.io.UnsupportedEncodingException
import java
.security.KeyManagementException
import java
.security.KeyStore
import java
.security.KeyStoreException
import java
.security.NoSuchAlgorithmException
import java
.security.cert.CertificateException
import java
.util.ArrayList
import java
.util.Listimport javax
.net.ssl.SSLContextimport org
.apache.http.HttpEntity
import org
.apache.http.NameValuePair
import org
.apache.http.client.ClientProtocolException
import org
.apache.http.client.entity.UrlEncodedFormEntity
import org
.apache.http.client.methods.CloseableHttpResponse
import org
.apache.http.client.methods.HttpGet
import org
.apache.http.client.methods.HttpPost
import org
.apache.http.conn.ssl.SSLConnectionSocketFactory
import org
.apache.http.conn.ssl.SSLContexts
import org
.apache.http.conn.ssl.TrustSelfSignedStrategy
import org
.apache.http.entity.ContentType
import org
.apache.http.entity.mime.MultipartEntityBuilder
import org
.apache.http.entity.mime.content.FileBody
import org
.apache.http.entity.mime.content.StringBody
import org
.apache.http.impl.client.CloseableHttpClient
import org
.apache.http.impl.client.HttpClients
import org
.apache.http.message.BasicNameValuePair
import org
.apache.http.util.EntityUtils
import org
.junit.Testpublic class HttpClientTest { @Test public void jUnitTest() { get()} public void ssl() { CloseableHttpClient httpclient = nulltry { KeyStore trustStore = KeyStore
.getInstance(KeyStore
.getDefaultType())FileInputStream instream = new FileInputStream(new File(
"d:\\tomcat.keystore"))try { // 加載keyStore d:\\tomcat
.keystore trustStore
.load(instream,
"123456".toCharArray())} catch (CertificateException e) { e
.printStackTrace()} finally { try { instream
.close()} catch (Exception ignore) { } } // 相信自己的CA和所有自簽名的證書 SSLContext sslcontext = SSLContexts
.custom()
.loadTrustMaterial(trustStore, new TrustSelfSignedStrategy())
.build()// 只允許使用TLSv1協(xié)議 SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] {
"TLSv1" }, null, SSLConnectionSocketFactory
.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER)httpclient = HttpClients
.custom()
.setSSLSocketFactory(sslsf)
.build()// 創(chuàng)建http請求(get方式) HttpGet httpget = new HttpGet(
"https://localhost:8443/myDemo/Ajax/serivceJ.action")System
.out.println(
"executing request" + httpget
.getRequestLine())CloseableHttpResponse response = httpclient
.execute(httpget)try { HttpEntity entity = response
.getEntity()System
.out.println(
"----------------------------------------")System
.out.println(response
.getStatusLine())if (entity != null) { System
.out.println(
"Response content length: " + entity
.getContentLength())System
.out.println(EntityUtils
.toString(entity))EntityUtils
.consume(entity)} } finally { response
.close()} } catch (IOException e) { e
.printStackTrace()} catch (KeyManagementException e) { e
.printStackTrace()} catch (NoSuchAlgorithmException e) { e
.printStackTrace()} catch (KeyStoreException e) { e
.printStackTrace()} finally { if (httpclient != null) { try { httpclient
.close()} catch (IOException e) { e
.printStackTrace()} } } } public void postForm() { // 創(chuàng)建默認(rèn)的httpClient實(shí)例. CloseableHttpClient httpclient = HttpClients
.createDefault()// 創(chuàng)建httppost HttpPost httppost = new HttpPost(
"http://localhost:8080/myDemo/Ajax/serivceJ.action")// 創(chuàng)建參數(shù)隊(duì)列 List<NameValuePair> formparams = new ArrayList<NameValuePair>()formparams
.add(new BasicNameValuePair(
"username",
"admin"))formparams
.add(new BasicNameValuePair(
"password",
"123456"))UrlEncodedFormEntity uefEntitytry { uefEntity = new UrlEncodedFormEntity(formparams,
"UTF-8")httppost
.setEntity(uefEntity)System
.out.println(
"executing request " + httppost
.getURI())CloseableHttpResponse response = httpclient
.execute(httppost)try { HttpEntity entity = response
.getEntity()if (entity != null) { System
.out.println(
"--------------------------------------")System
.out.println(
"Response content: " + EntityUtils
.toString(entity,
"UTF-8"))System
.out.println(
"--------------------------------------")} } finally { response
.close()} } catch (ClientProtocolException e) { e
.printStackTrace()} catch (UnsupportedEncodingException e1) { e1
.printStackTrace()} catch (IOException e) { e
.printStackTrace()} finally { // 關(guān)閉連接,釋放資源 try { httpclient
.close()} catch (IOException e) { e
.printStackTrace()} } } public void post() { // 創(chuàng)建默認(rèn)的httpClient實(shí)例. CloseableHttpClient httpclient = HttpClients
.createDefault()// 創(chuàng)建httppost HttpPost httppost = new HttpPost(
"http://localhost:8080/myDemo/Ajax/serivceJ.action")// 創(chuàng)建參數(shù)隊(duì)列 List<NameValuePair> formparams = new ArrayList<NameValuePair>()formparams
.add(new BasicNameValuePair(
"type",
"house"))UrlEncodedFormEntity uefEntitytry { uefEntity = new UrlEncodedFormEntity(formparams,
"UTF-8")httppost
.setEntity(uefEntity)System
.out.println(
"executing request " + httppost
.getURI())CloseableHttpResponse response = httpclient
.execute(httppost)try { HttpEntity entity = response
.getEntity()if (entity != null) { System
.out.println(
"--------------------------------------")System
.out.println(
"Response content: " + EntityUtils
.toString(entity,
"UTF-8"))System
.out.println(
"--------------------------------------")} } finally { response
.close()} } catch (ClientProtocolException e) { e
.printStackTrace()} catch (UnsupportedEncodingException e1) { e1
.printStackTrace()} catch (IOException e) { e
.printStackTrace()} finally { // 關(guān)閉連接,釋放資源 try { httpclient
.close()} catch (IOException e) { e
.printStackTrace()} } } public void get() { CloseableHttpClient httpclient = HttpClients
.createDefault()try { // 創(chuàng)建httpget. HttpGet httpget = new HttpGet(
"http://www.baidu.com/")System
.out.println(
"executing request " + httpget
.getURI())// 執(zhí)行g(shù)et請求. CloseableHttpResponse response = httpclient
.execute(httpget)try { // 獲取響應(yīng)實(shí)體 HttpEntity entity = response
.getEntity()System
.out.println(
"--------------------------------------")// 打印響應(yīng)狀態(tài) System
.out.println(response
.getStatusLine())if (entity != null) { // 打印響應(yīng)內(nèi)容長度 System
.out.println(
"Response content length: " + entity
.getContentLength())// 打印響應(yīng)內(nèi)容 System
.out.println(
"Response content: " + EntityUtils
.toString(entity))} System
.out.println(
"------------------------------------")} finally { response
.close()} } catch (ClientProtocolException e) { e
.printStackTrace()} catch (IOException e) { e
.printStackTrace()} finally { // 關(guān)閉連接,釋放資源 try { httpclient
.close()} catch (IOException e) { e
.printStackTrace()} } } public void upload() { CloseableHttpClient httpclient = HttpClients
.createDefault()try { HttpPost httppost = new HttpPost(
"http://localhost:8080/myDemo/Ajax/serivceFile.action")FileBody bin = new FileBody(new File(
"F:\\image\\sendpix0.jpg"))StringBody comment = new StringBody(
"A binary file of some kind", ContentType
.TEXT_PLAIN)HttpEntity reqEntity = MultipartEntityBuilder
.create()
.addPart(
"bin", bin)
.addPart(
"comment", comment)
.build()httppost
.setEntity(reqEntity)System
.out.println(
"executing request " + httppost
.getRequestLine())CloseableHttpResponse response = httpclient
.execute(httppost)try { System
.out.println(
"----------------------------------------")System
.out.println(response
.getStatusLine())HttpEntity resEntity = response
.getEntity()if (resEntity != null) { System
.out.println(
"Response content length: " + resEntity
.getContentLength())} EntityUtils
.consume(resEntity)} finally { response
.close()} } catch (ClientProtocolException e) { e
.printStackTrace()} catch (IOException e) { e
.printStackTrace()} finally { try { httpclient
.close()} catch (IOException e) { e
.printStackTrace()} } }
}
總結(jié)
以上是生活随笔為你收集整理的WebService开发方法介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。