溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

webservice調(diào)用

發(fā)布時(shí)間:2020-06-22 06:16:49 來源:網(wǎng)絡(luò) 閱讀:763 作者:17099933344 欄目:軟件技術(shù)

第一種辦法:下載apache cxf的包,使用wsdl2java工具生成java客戶端,未能解決帶驗(yàn)證的問題。

第二種方法:根據(jù)wsdl文件生成客戶端,也沒找到解決方法。

最后使用httpclient解決。

public class DynamicHttpclientCall {

    private String namespace;

    private String methodName;

    private String wsdlLocation;

    private String soapResponseData;

private String username;

private String password;

private String myWorkStation;

static int socketTimeout = 30000;// 請(qǐng)求超時(shí)時(shí)間  

   static int connectTimeout = 30000;// 傳輸超時(shí)時(shí)間 

    public DynamicHttpclientCall(String namespace, String methodName,

        String wsdlLocation,String username,String password,String myWorkStation) {

  

        this.namespace = namespace;

        this.methodName = methodName;

        this.wsdlLocation = wsdlLocation;

        

        this.username = username;

        this.password = password;

        this.myWorkStation = myWorkStation;

    }

    public HttpClientContext createBasicAuthContext(HttpHost host,String username, String password) { 

        CredentialsProvider credsProvider = new BasicCredentialsProvider(); 

        Credentials defaultCreds = new UsernamePasswordCredentials(username, password); 

        credsProvider.setCredentials(new AuthScope(host.getHostName(), host.getPort()), defaultCreds); 

 

        AuthCache authCache = new BasicAuthCache(); 

        BasicScheme basicAuth = new BasicScheme(); 

        authCache.put(host, basicAuth); 

 

        HttpClientContext context = HttpClientContext.create(); 

        context.setCredentialsProvider(credsProvider); 

        context.setAuthCache(authCache); 

        return context; 

    }

    public String invoke(Map<String, String> patameterMap) throws Exception {

    //HttpHost host = new HttpHost("piprd.shandongair.com.cn",50000);

    //HttpClientContext createBasicAuthContext = createBasicAuthContext(host,username,password);

    HttpPost postMethod = new HttpPost(wsdlLocation);

    postMethod.setHeader("Content-type", "application/soap+xml; charset=utf-8");

//     HttpRequest postMethod = new HttpRequest(wsdlLocation);

        String soapRequestData = buildRequestData(patameterMap);

  

//        byte[] bytes = soapRequestData.getBytes("utf-8");

//        InputStream inputStream = new ByteArrayInputStream(bytes, 0,bytes.length);

//        RequestEntity requestEntity = new InputStreamRequestEntity(inputStream, bytes.length, "application/soap+xml; charset=utf-8");

//        postMethod.setRequestEntity(requestEntity);

        postMethod.setEntity(new StringEntity(soapRequestData));

        HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();  

//      // 設(shè)置BasicAuth  

        CredentialsProvider provider = new BasicCredentialsProvider();  

//      // Create the authentication scope  

        AuthScope scope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM);  

//      // Create credential pair,在此處填寫用戶名和密碼  

        UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(username, password);  

//      // Inject the credentials  

        provider.setCredentials(scope, credentials);  

//      // Set the default credentials provider  

        httpClientBuilder.setDefaultCredentialsProvider(provider);  

//      // HttpClient  

        CloseableHttpClient closeableHttpClient = httpClientBuilder.build();  

        

//        httpClient.getParams().setParameter(HttpProtocolParams.HTTP_CONTENT_CHARSET, "utf-8");

//        NTCredentials creds = new NTCredentials(username,password,myWorkStation,"");

        CloseableHttpResponse execute = closeableHttpClient.execute(postMethod);

        int statusCode = execute.getStatusLine().getStatusCode();

        String text = IOUtils.toString(execute.getEntity().getContent(), "utf-8");

        return text;

    }

//    public int invoke(Map<String, String> patameterMap) throws Exception {

//        PostMethod postMethod = new PostMethod(wsdlLocation);

//        String soapRequestData = buildRequestData(patameterMap);

//  

//        byte[] bytes = soapRequestData.getBytes("utf-8");

//        InputStream inputStream = new ByteArrayInputStream(bytes, 0,bytes.length);

//        RequestEntity requestEntity = new InputStreamRequestEntity(inputStream, bytes.length, "application/soap+xml; charset=utf-8");

//        postMethod.setRequestEntity(requestEntity);

//  

////        HttpClient httpClient = new HttpClient();

//        // 創(chuàng)建HttpClientBuilder  

//        HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();  

////        // 設(shè)置BasicAuth  

//        CredentialsProvider provider = new BasicCredentialsProvider();  

////        // Create the authentication scope  

//        AuthScope scope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM);  

////        // Create credential pair,在此處填寫用戶名和密碼  

//        UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(username, password);  

////        // Inject the credentials  

//        provider.setCredentials(scope, credentials);  

////        // Set the default credentials provider  

//        httpClientBuilder.setDefaultCredentialsProvider(provider);  

////        // HttpClient  

//        CloseableHttpClient closeableHttpClient = httpClientBuilder.build();  

//        

////        httpClient.getParams().setParameter(HttpProtocolParams.HTTP_CONTENT_CHARSET, "utf-8");

////        NTCredentials creds = new NTCredentials(username,password,myWorkStation,"");

//        

//       

//        

//        int statusCode = httpClient.executeMethod(postMethod);

//        soapResponseData = postMethod.getResponseBodyAsString();

//        return statusCode;

//    }


 

    private String buildRequestData(Map<String, String> patameterMap) {

        StringBuffer soapRequestData = new StringBuffer();

        soapRequestData.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:com=\"com:sda:querydata\"><soapenv:Header/>");

        soapRequestData.append("<soapenv:Body><com:MT_DD_Request><MSGRP></MSGRP></com:MT_DD_Request></soapenv:Body></soapenv:Envelope>");

//        Set<String> nameSet = patameterMap.keySet();

//        for (String name : nameSet) {

//            soapRequestData.append("<" + name + ">" + patameterMap.get(name)+ "</" + name + ">");

//        }

        return soapRequestData.toString();

    }

   

}



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI