我查看了以下链接,但似乎没有什么具体的。 Secure HTTP Post in Android 这个不再适用了,我已经测试了,其他人的评论说这不起作用。
我也检查了这一点:DefaultHttpClient, Certificates, Https and posting problem!这似乎可行,但博主只是让你感到不安。更多分步说明会有所帮助。我设法得到了我的证书,但我没能完成他的第二步。
http://www.makeurownrules.com/secure-rest-web-service-mobile-application-android.html这个似乎很好,但同样,我在最后一步松开了作者:“回到原来的休息客户端代码。”他也到处都是,我不知道他正在使用哪些图书馆。他没有解释他的代码和
RestTemplate restTemplate = new RestTemplate();
这是另一个悬念。因为没有提供该课程。所以,如果有人可以解释如何详细地做HTTPS发布请求,这将是很好的。我确实需要接受自签名证书。
答案 0 :(得分:11)
我希望它会有所帮助。这是我使用的代码并且工作得很好。
private HttpClient createHttpClient()
{
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue(params, true);
SchemeRegistry schReg = new SchemeRegistry();
schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg);
return new DefaultHttpClient(conMgr, params);
}
然后创建一个像这样的HttpClient: -
HttpClient httpClient = createHttpClient();
并将其与HttpPost一起使用。
干杯!!
修改强>
我没有在我的代码中使用RestTemplate。我发了一个简单的帖子请求。如果您需要更多帮助,请告诉我。好像我最近做了类似于你正在寻找的事情。
答案 1 :(得分:0)
这是我用于HTTPS Post的方法,在这里我使用了自定义证书,所以用您自己的方式更改HttpClient赋值...
public String postData(String url, String xmlQuery) {
final String urlStr = url;
final String xmlStr = xmlQuery;
final StringBuilder sb = new StringBuilder();
Thread t1 = new Thread(new Runnable() {
public void run() {
HttpClient httpclient = MySSLSocketFactory.getNewHttpClient();
HttpPost httppost = new HttpPost(urlStr);
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
1);
nameValuePairs.add(new BasicNameValuePair("xml", xmlStr));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
Log.d("Vivek", response.toString());
HttpEntity entity = response.getEntity();
InputStream i = entity.getContent();
Log.d("Vivek", i.toString());
InputStreamReader isr = new InputStreamReader(i);
BufferedReader br = new BufferedReader(isr);
String s = null;
while ((s = br.readLine()) != null) {
Log.d("YumZing", s);
sb.append(s);
}
Log.d("Check Now",sb+"");
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} /*
* catch (ParserConfigurationException e) { // TODO
* Auto-generated catch block e.printStackTrace(); } catch
* (SAXException e) { // TODO Auto-generated catch block
* e.printStackTrace(); }
*/
}
});
t1.start();
try {
t1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Getting from Post Data Method "+sb.toString());
return sb.toString();
}