本帖最后由 u013639065 于 2014-10-30 13:42:46 编辑

解决方案 »

  1.   

    Soap就是基于soap协议  httpClient基于http协议      Socket是TCP和UDP协议两个都可以访问webservice
      

  2.   

    WebService使用的是   SOAP 协议
    soap协议只是用来封装消息用的   
    SOAP协议= HTTP协议+ XML数据格式
      

  3.   


    可以使用httpClient 访问webService吗
      

  4.   


    可以使用httpClient 访问webService吗
    可以的, 要拼接SOAP协议
      

  5.   


    两者都可以的话,他们有啥区别?什么情况下用哪个?我个人觉得, 如果不支持http get和post请求的话,用soap,  支持的话可以用httpclient
      

  6.   


    可以使用httpClient 访问webService吗
    可以的, 要拼接SOAP协议我现在都有点迷糊了,我贴一段代码,你帮我看下这个是不是访问webService的工具方法?
    每次做项目都是直接用这个方法call API,知道怎么做但是不知道为什么。。public static String post(Activity activity, HashMap<String, String> paramer) { SysApplication sysApplication = (SysApplication) activity.getApplication();
    String method = paramer.get("method");
    HttpPost httpRequest = new HttpPost(Utils.getServerUrl(activity) + File.separator + service + File.separator + method);
    System.out.println("url--->"+(Utils.getServerUrl(activity) + File.separator + service + File.separator + method));

    httpRequest.addHeader("User-Agent", sysApplication.getUserAgentString());
    String strResult = ""; /*
     * post运行,传递变量必须使用NameValuePair[]数组存储,通过HttpRequest.setEntity()方法来发送HTTP请求
     * .
     */
    List<NameValuePair> params = new ArrayList<NameValuePair>(); if (paramer.size() >= 2) {
    for (Map.Entry<String, String> m : paramer.entrySet()) {
    params.add(new BasicNameValuePair(m.getKey(), m.getValue()));
    }
    }
    /* 发送HTTP request */
    try {
    httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); /* 取得HTTP response */
    HttpResponse httpResponse = (HttpResponse) getNewHttpClient().execute(httpRequest);
    // System.out.println("狀態嗎---->"+(httpResponse.getStatusLine().getStatusCode()));
    /* 若状态码为200 ok */
    if (httpResponse.getStatusLine().getStatusCode() == 200) {
    /* 取出答应字符串 */
    strResult = EntityUtils.toString(httpResponse.getEntity(), "UTF-8").replaceAll("\\r", "").replaceAll("\\n", "");
    System.out.println("得到Server返回的內容是 ===>" + strResult);
    // if (strResult.trim().equals("F")) {
    // return "";
    // } else {
    return strResult != null ? strResult : "";
    //
    // } }
    }
    catch (Exception e) {
    e.printStackTrace();
    Log.d("Exception", e.getMessage() + "");
    return "";
    }
    return "";
    } public static HttpClient getNewHttpClient() {
    try {
    KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
    trustStore.load(null, null); SSLSocketFactory sf = new SSLSocketFactoryEx(trustStore);
    sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
    HttpParams params = new BasicHttpParams();
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
    /**
     * 設定10秒連接超時
     */
    params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 30000);
    params.setParameter(CoreConnectionPNames.SO_TIMEOUT, 30000); SchemeRegistry registry = new SchemeRegistry();
    registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 8080));
    registry.register(new Scheme("https", sf, 443));
    ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
    return new DefaultHttpClient(ccm, params);
    }
    catch (Exception e) {
    e.printStackTrace();
    Log.i("HttpPost", e.getMessage());
    return new DefaultHttpClient();
    }
    }
      

  7.   


    两者都可以的话,他们有啥区别?什么情况下用哪个?我个人觉得, 如果不支持http get和post请求的话,用soap,  支持的话可以用httpclient你帮我看下我上面贴的那段代码是访问WebService的吗?我做一些项目,对方服务器提供接口,我用这段代码去call API,
    这样算是访问webService吗