웹 서비스의 네 가지 클 라 이언 트 호출 방식 (기본)
17066 단어 webservice
웹 서비스 주소:http://www.webxml.com.cn/zh_cn/web_services.aspx
1. 클 라 이언 트 호출 방식 생 성 주의: 이 방식 은 사용 이 간단 하지만 일부 관건 적 인 요 소 는 코드 생 성 시 생 성 코드 에 쓰 여 있어 유지 하기 어렵 기 때문에 테스트 에 만 사 용 됩 니 다.(1) Wsimport 명령 은 Wsimport 가 jdk (1.6 버 전 이후) 가 제공 하 는 도구 라 고 소개 합 니 다. 그의 역할 은 WSDL 주소 에 따라 클 라 이언 트 코드 를 생 성 하 는 것 입 니 다.Wsimport 위치 JAVAHOME / bin Wsimport 에서 자주 사용 하 는 인자: - s, 자바 파일 생 성 - d, class 파일 생 성, 기본 매개 변수 - p, 가방 이름 을 지정 합 니 다. 이 매개 변 수 를 추가 하지 않 으 면 기본 패키지 이름 은 wdl 문서 의 네 임 스페이스 의 역순 입 니 다.Wsimport 는 SOAP 1.1 클 라 이언 트 의 생 성 만 지원 합 니 다.
(2) 공중전화 번호 귀속 지 조회 서비스 호출
첫 번 째 단계: wsimport 생 성 클 라 이언 트 코드 wsimport - p cn. itcast. mobile - s.http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 두 번 째 단계: 사용 설명서 (wdl 문서) 를 읽 고 생 성 된 클 라 이언 트 코드 로 서버 를 호출 합 니 다.
package cn.itcast.mobile.client;
import cn.itcast.mobile.MobileCodeWS;
import cn.itcast.mobile.MobileCodeWSSoap;
/**
*
* @ClassName: MobileClient
* @Description: TODO( )
* @author
* @date 2017 11 8 8:35:02
*
*/
public class MobileClient {
public static void main(String[] args) {
// , :
MobileCodeWS mobileCodeWS = new MobileCodeWS();
// , :,port--binding--portType
//MobileCodeWSSoap mobileCodeWSSoap = mobileCodeWS.getPort(MobileCodeWSSoap.class);
//
// get+ name:getWSServerPort
MobileCodeWSSoap mobileCodeWSSoap = mobileCodeWS.getMobileCodeWSSoap();
String mobileCodeInfo = mobileCodeWSSoap.getMobileCodeInfo("18518114962", "");
System.out.println(mobileCodeInfo);
}
}
2. service 프로 그래 밍 호출 방식 주의: (1) 이 방식 은 관건 적 인 요 소 를 사용자 정의 할 수 있 고 나중에 유지 하기 편리 하 며 표준 적 인 개발 방식 입 니 다.(2) 이러한 방식 역시 뉴스 import 에서 클 라 이언 트 코드 를 생 성 해 야 합 니 다. 서비스 인터페이스 류 만 도입 하면 됩 니 다. 예 를 들 어
포트 서비스 가 필요 하 다 면 생 성 된 Mobile CodeWSSoap. class 류 를 도입 해 야 합 니 다.package cn.itcast.mobile.client;
import java.io.IOException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import cn.itcast.mobile.MobileCodeWSSoap;
/**
*
* Title: ServiceClient.java
* Description:Service
* wsimport , ,
*
* , MobileCodeWSSoap.class
*/
public class ServiceClient {
public static void main(String[] args) throws IOException {
// WSDL URL,
URL url = new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl");
//
//1.namespaceURI - (wsdl targetNamespace)
//2.localPart - (wsdl , )
QName qname = new QName("http://WebXml.com.cn/", "MobileCodeWS");
//
// :
//1.wsdlDocumentLocation - wsdl
//2.serviceName -
Service service = Service.create(url, qname);
//
// :serviceEndpointInterface - (wsdl name , )
MobileCodeWSSoap mobileCodeWSSoap = service.getPort(MobileCodeWSSoap.class);
//
String result = mobileCodeWSSoap.getMobileCodeInfo("1866666666", "");
System.out.println(result);
}
}
3. HttpURLConnection 호출 방식
개발 절차: 첫 번 째 단계: 서비스 주 소 를 만 드 는 두 번 째 단계: 서비스 주소 로 통 하 는 연결 을 여 는 세 번 째 단계: 매개 변수 설정 POST, POST 는 대문자 로 해 야 합 니 다. 대문자 가 아니라면 다음 과 같은 이상 을 보고 합 니 다. 입 출력 을 설정 하지 않 으 면 다음 과 같은 이상 을 보고 합 니 다. 네 번 째 단계: SOAP 데 이 터 를 조직 하고 요청 을 보 내 는 다섯 번 째 단계: 서버 응답 을 받 습 니 다.인쇄 하 다.
package cn.itcast.mobile.client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
*
* @ClassName: HttpURLConectionMode
* @Description: TODO( HttpURLConnection http )
* sope , xml
* @author
* @date 2017 11 8 9:18:24
*
*/
public class HttpURLConectionMode {
public static void main(String[] args) throws IOException {
// : , WSDL
URL url = new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx");
// :
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// :
//3.1 :POST
connection.setRequestMethod("POST");
//3.2 :content-type
connection.setRequestProperty("content-type", "text/xml;charset=utf-8");
//3.3 , connection ,
connection.setDoInput(true);
connection.setDoOutput(true);
// : SOAP ,
String soapXML = getXML("15226466316");
OutputStream os = connection.getOutputStream();
os.write(soapXML.getBytes());
// : , (xml )
int responseCode = connection.getResponseCode();
if(200 == responseCode){//
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
StringBuilder sb = null;
try {
is = connection.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
sb = new StringBuilder();
String temp = null;
while(null != (temp = br.readLine())){
sb.append(temp);
}
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
br.close();
isr.close();
is.close();
}
}
os.close();
}
/**
*
string
string
* @param phoneNum
* @return
*/
public static String getXML(String phoneNum){
String soapXML = ""
+""
+""
+""
+"" +phoneNum+""
+""
+""
+""
+"";
return soapXML;
}
}
4. Ajax 호출 방식 (도 메 인 문제 존재) 도 메 인 해결 참고:http://www.cnblogs.com/zhangzt/p/5966185.html jsonp 는 크로스 필드 를 실현 할 수 없습니다. 웹 서 비 스 는 xml 형식 이기 때 문 입 니 다.
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Documenttitle>
<script type="text/javascript">
function queryMobile(){
// XMLHttpRequest
var xhr = new XMLHttpRequest();
//
xhr.open("post","http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx",true);
//
xhr.setRequestHeader("content-type","text/xml;charset=utf-8");
//
xhr.onreadystatechange=function(){
//
if(4 == xhr.readyState && 200 == xhr.status){
alert(xhr.responseText);
}
}
// SOAP
var soapXML = ""
+""
+""
+""
+"" +document.getElementById("phoneNum").value+""
+""
+""
+""
+"";
alert(soapXML);
//
xhr.send(soapXML);
}
script>
head>
<body>
:<input type="text" id="phoneNum"/> <input type="button" value=" " onclick="javascript:queryMobile();"/>
body>
html>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java가 클라이언트를 통해 서버 웹 서비스에 접근하는 방법본고는 자바가 클라이언트를 통해 서버 웹 서비스에 접근하는 방법을 실례로 설명한다.다음과 같이 여러분에게 참고할 수 있도록 공유합니다. 자바 관련 내용에 관심이 있는 더 많은 독자들은 본 사이트의 주제를 볼 수 있습...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.