POST数据

一、需要用到的场景

jQuery中使用$.post()就可以方便的发起一个post请求,在android程序中有时也要从服务器获取一些数据,就也必须得使用post请求了。

二、需要用到的主要类

android中使用post请求主要要用到的类是HttpPostHttpResponseEntityUtils

三、主要思路

1、创建HttpPost实例,设置需要请求服务器的url

2、为创建的HttpPost实例设置参数,参数设置时使用键值对的方式用到NameValuePair类。

3、发起post请求获取返回实例HttpResponse

4、使用EntityUtils对返回值的实体进行处理(可以取得返回的字符串,也可以取得返回的byte数组)

(httpResponse =new DefaultHttpClient().execute(httpPost)最好放在新线程里,否则会报错。也就是说没有thread的话会直接报错)

packagecom.example.posttest;

importjava.io.IOException;

importjava.util.ArrayList;

importjava.util.List;

importorg.apache.http.HttpResponse;

importorg.apache.http.NameValuePair;

importorg.apache.http.client.ClientProtocolException;

importorg.apache.http.client.entity.UrlEncodedFormEntity;

importorg.apache.http.client.methods.HttpPost;

importorg.apache.http.impl.client.DefaultHttpClient;

importorg.apache.http.message.BasicNameValuePair;

importorg.apache.http.protocol.HTTP;

importorg.apache.http.util.EntityUtils;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.widget.TextView;

import android.widget.Toast;

 

publicclass MainActivity extends Activity {

   TextView tView;

   HttpPost httpPost;

   HttpResponse httpResponse = null;

   List<NameValuePair> params;

   @Override

   publicvoid onCreate(Bundle savedInstanceState){

      super.onCreate(savedInstanceState);

      String url = "http://www.beijibear.com/android_post.php";

      tView = (TextView) findViewById(R.id.textview1);

      // 第一步,创建HttpPost对象

      httpPost = new HttpPost(url);

      // 设置HTTP POST请求参数必须用NameValuePair对象

      params = new ArrayList<NameValuePair>();

      params.add(new BasicNameValuePair("username", "beijibear"));

     

      new Thread(){

         publicvoid run() {

            try {

                // 设置httpPost请求参数

                httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));

                httpResponse = new DefaultHttpClient().execute(httpPost);

                //System.out.println(httpResponse.getStatusLine().getStatusCode());

                if (httpResponse.getStatusLine().getStatusCode() == 200) {

                   // 第三步,使用getEntity方法活得返回结果

                   String result = EntityUtils.toString(httpResponse.getEntity());

                   Log.i("test", result+"");

                }

            } catch (ClientProtocolException e) {

                e.printStackTrace();

            } catch (IOException e) {

                e.printStackTrace();

            }

         };

      }.start();

 

   }

}

在POSTjson的时候,只需要用params.add(new BasicNameValuePair("参数" json数据))

这只是单纯的post数据,但是实际应用中应该处理超时的情况。网上有关如下讲解:

HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000);
httpResponse = client.execute(httpPost);
只需要进行几行代码处理即可,但是我并没有测试出来


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium 是一个用于自动化浏览器操作的工具,它本身不会直接获取 POST 数据。但是,你可以通过模拟浏览器的行为来实现 POST 请求,并获取返回的数据。 以下是一个使用 Selenium 发送 POST 请求的示例代码: ```python from selenium import webdriver import requests # 创建一个 Chrome 浏览器实例 driver = webdriver.Chrome() # 访问目标网站的登录页面 driver.get('https://example.com/login') # 输入用户名和密码,并提交表单 username = driver.find_element_by_name('username') password = driver.find_element_by_name('password') username.send_keys('your_username') password.send_keys('your_password') driver.find_element_by_css_selector('input[type="submit"]').click() # 获取当前页面的 URL,以便确定登录是否成功 current_url = driver.current_url # 如果登录成功,则发送 POST 请求获取数据 if 'login_success' in current_url: url = 'https://example.com/data' data = {'param1': 'value1', 'param2': 'value2'} response = requests.post(url, data=data) print(response.text) else: print('Login failed.') # 关闭浏览器 driver.quit() ``` 在上面的示例代码中,我们首先创建了一个 Chrome 浏览器实例,并访问了目标网站的登录页面。然后,我们输入用户名和密码,并提交表单。如果登录成功,则发送 POST 请求获取数据。最后,我们关闭浏览器。 值得注意的是,我们使用 requests 库来发送 POST 请求,并获取返回的数据。这是因为 Selenium 本身不支持发送网络请求,所以我们需要借助第三方库来实现。在发送 POST 请求时,我们需要提供目标 URL 和 POST 数据,这些信息可以根据实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值