如何在android中发送HTTP POST
请求URL
并Body
获得响应?HTTP POST
例如
谢谢。
它取决于您是否需要进行身份验证才能查看网页。
无论是否需要身份验证,您都必须在您的清单中添加以下权限才能访问该网页:
<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)
{
}
}
最后,考虑到这一点:
- 如果您正在进行身份验证,请考虑“用户名”和“密码”字段(在 BasicNameValuePair 中)可能有另一个名称,这取决于网页
- 使用 BufferedReader 的 intro.readLine,您正在阅读网页,就好像您正在阅读文件一样,因此您可能需要解析以避免显示 html 代码