如何使用HTTP POST
发送URL
请求Body
并在Android中使用HTTP POST
获取回复?
例如
感谢。
答案 0 :(得分:1)
根据您是否需要进行身份验证以查看网页而有所不同。
无论是否需要进行身份验证,您都必须在Manifest中添加以下权限才能访问该网页:
<uses-permission android:name="android.permission.INTERNET"/>
在您进行访问的活动或课程中,您可以执行以下操作:
import android.net.ConnectivityManager;
import android.os.Handler;
import android.os.Message;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
public class YourClass
{
BufferedReader intro=null;
String url="Your Site URL?Your request body";
DefaultHttpClient cliente=new DefaultHttpClient();
HttpPost post=new HttpPost(url);
List<NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username","Your username"));
nvps.add(new BasicNameValuePair("password","your password"));
try
{
post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
HttpResponse response = cliente.execute(post);
if(response.getStatusLine().getStatusCode()==200)//this means that you got the page
{
HttpEntity entity=response.getEntity();
intro=new BufferedReader(new InputStreamReader(entity.getContent()));
intro.readLine();
intro.close();
}
}
catch (UnsupportedEncodingException ex)
{
}
catch(IOException e)
{
}
}
最后,考虑到这一点:
- 如果您正在进行身份验证,请考虑字段“username”和“password”(在BasicNameValuePair内)可能有另一个名称,该名称依赖于网页
- 使用BufferedReader的intro.readLine,您正在阅读网页,就像您正在阅读该文件一样,因此您可能需要解析以避免显示HTML代码