您好,登錄后才能下訂單哦!
第一種辦法:下載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();
}
}
免責(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)容。