웹 서비스의 네 가지 클 라 이언 트 호출 방식 (기본)

17066 단어 webservice
전송:http://blog.csdn.net/csdn_gia/article/details/54863549
웹 서비스 주소: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> 

좋은 웹페이지 즐겨찾기