我想使用POST命令,像这样:
http://123.456.78.9/Dev/SignIn?Username=email%40google.edu&密码= thePassword
在我的Android应用程序,我已经看了像HTTPConnection的东西,但我仍然不确定什么是最好的方式来做这样的调用,我需要包括多个键和值。
我现在正在尝试这个:
URl url = new URL("http://123.456.78.9/Dev/SignIn?");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("email", emailText));
params.add(new BasicNameValuePair("Password", passwordText));
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(getQuery(params));
writer.flush();
writer.close();
os.close();
这样可以吗?如果我用这个方法,我怎么得到响应呢?
你可以使用Android异步Http客户端库:
final AsyncHttpClient asyncHttpClient=new AsyncHttpClient();
//Add Parameter
RequestParams requestParams=new RequestParams();
requestParams.put("email", emailText);
requestParams.put("Password", passwordText);
//Chose one from two method in below
//send with get method
asyncHttpClient.get("http://123.456.78.9/Dev/SignIn", requestParams, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
System.out.println(responseString);
}
});
//send with post method
asyncHttpClient.post("http://123.456.78.9/Dev/SignIn", requestParams, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
System.out.println(responseString);
}
});
但是你必须在gradle中添加这个库
compile 'com.loopj.android:android-async-http:1.4.9'