关于SoapObject和httpClient 本帖最后由 u013639065 于 2014-10-30 13:42:46 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Soap就是基于soap协议 httpClient基于http协议 Socket是TCP和UDP协议两个都可以访问webservice WebService使用的是 SOAP 协议soap协议只是用来封装消息用的 SOAP协议= HTTP协议+ XML数据格式 可以使用httpClient 访问webService吗 可以使用httpClient 访问webService吗可以的, 要拼接SOAP协议 两者都可以的话,他们有啥区别?什么情况下用哪个?我个人觉得, 如果不支持http get和post请求的话,用soap, 支持的话可以用httpclient 可以使用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(); } } 两者都可以的话,他们有啥区别?什么情况下用哪个?我个人觉得, 如果不支持http get和post请求的话,用soap, 支持的话可以用httpclient你帮我看下我上面贴的那段代码是访问WebService的吗?我做一些项目,对方服务器提供接口,我用这段代码去call API,这样算是访问webService吗 向第三方程序填充用户名和密码 各位,如何让android自动挂载U盘 Android源码开发模式下,Linux下的IPC机制消息队列是否支持? Android jpg exif信息 关于实现发送带有表情的文字的问题 冰天雪地跪求高手给予解答.Android webview2个问题. 输出图片到SD卡上失败,为什么? 请问如何在设置VideoView的全屏播放和保持视频原尺寸播放 求救:关于ShareSDK微信分享 新手学android刚创建的工程就报错 求大神 新人刚刚接触android 虚拟机的配置问题。。 关于IOS和Android webview 打开网页里的附件
soap协议只是用来封装消息用的
SOAP协议= HTTP协议+ XML数据格式
可以使用httpClient 访问webService吗
可以使用httpClient 访问webService吗
可以的, 要拼接SOAP协议
两者都可以的话,他们有啥区别?什么情况下用哪个?我个人觉得, 如果不支持http get和post请求的话,用soap, 支持的话可以用httpclient
可以使用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();
}
}
两者都可以的话,他们有啥区别?什么情况下用哪个?我个人觉得, 如果不支持http get和post请求的话,用soap, 支持的话可以用httpclient你帮我看下我上面贴的那段代码是访问WebService的吗?我做一些项目,对方服务器提供接口,我用这段代码去call API,
这样算是访问webService吗