如何在android中使用带有body的http post url发送请求和响应?

时间:2012-09-20 10:12:58

标签: android http http-post

如何使用HTTP POST发送URL请求Body并在Android中使用HTTP POST获取回复?

例如 enter image description here

enter image description here

感谢。

1 个答案:

答案 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代码