使用Android发送POST登录请求!

4
我有一个在Android中的登录表单,我想用它来向服务器发送HttpPost请求,并在登录成功后返回一个cookie。但是我有一个问题,如何实现正确的版本?如何获取cookie并将其存储在设备上(我应该将其存储在偏好数据库中吗?这样我以后可以销毁它?)。
我现在有这段代码:
public void postData() {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://a_site.com/logintest.aspx");

    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("txtUsername", "username"));
        nameValuePairs.add(new BasicNameValuePair("txtPassword", "123456"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = httpclient.execute(httppost);
        Log.v(TAG, "Response from server: " + response.toString());

    } catch (ClientProtocolException e) {

    } catch (IOException e) {

    }
}

如果登录成功,我该如何获取cookie并将其存储?

2个回答

5

不必自己编写,你可以简单地进行操作:

import org.apache.http.util.EntityUtils;



HttpResponse response = httpclient.execute(httppost);
String responseAsText = EntityUtils.toString(response.getEntity());

@Bachask8,如果你有问题,应该提出一个新的问题。 - dave.c

2
以下代码片段将返回一个格式良好的字符串表示形式的HTTP响应:
public String responseHandler(HttpResponse response)
{
    HttpEntity resEntity = response.getEntity();
            br = new BufferedReader(new InputStreamReader(
                    resEntity.getContent(), "UTF-8"));
            String line;
            String result = "";
            while (((line = br.readLine()) != null)) {              
                result = result + line + "\n";
            }

            return result;
}

你选择如何存储结果是另一个问题,我建议使用某种全局变量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接