资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

webservice调用-创新互联

第一种办法:下载apache cxf的包,使用wsdl2java工具生成java客户端,未能解决带验证的问题。

创新互联公司是一家专业提供湘潭企业网站建设,专注与做网站、成都做网站、H5高端网站建设、小程序制作等业务。10年已为湘潭众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

第二种方法:根据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;// 请求超时时间

  static int connectTimeout = 30000;// 传输超时时间

  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 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();

//    // 设置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 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();

//     // 创建HttpClientBuilder

//     HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();

////     // 设置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 patameterMap) {

    StringBuffer soapRequestData = new StringBuffer();

    soapRequestData.append("");

    soapRequestData.append("");

//     Set nameSet = patameterMap.keySet();

//     for (String name : nameSet) {

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

//     }

    return soapRequestData.toString();

  }

}



另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻标题:webservice调用-创新互联
本文网址:http://cdkjz.cn/article/ccjohp.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220