Android的中http协议HttpURLConnection中post请求

本文介绍了一个Android应用中的异步任务实现方法,通过AsyncTask进行网络数据的获取及UI更新。具体包括如何使用POST请求从指定API获取数据、解析JSON响应并更新界面上的文本视图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class MainActivity extends AppCompatActivity {
    private TextView textView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView=(TextView)findViewById(R.id.mytext);
        //异步任务;
        MyTask task=new MyTask();
        task.execute("");
    }
    class MyTask extends AsyncTask<String,Integer,String>{
        @Override
        protected String doInBackground(String... params) {
            //网络请求
            return getPostData();
        }


        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //json解析
            Gson gson=new Gson();
            DataBean bean=gson.fromJson(s,DataBean.class);
            String text=bean.result.data.get(0).imtro;
            //更新UI操作
            textView.setText(text);
        }
    }
    //通过post请求来从网络读取数据;
    private String getPostData(){
        String path="http://apis.juhe.cn/cook/query.php";


        try {
            String value="menu="+ URLEncoder.encode("白菜","utf-8")+"&key=13af589c334ec80c037688e927407966&rn=1";
            //post的URL不要加参数值;
            URL url=new URL(path);
            HttpURLConnection connection=(HttpURLConnection)url.openConnection();
            //设置请求方式为post;默认是get;
            connection.setRequestMethod("POST");
            //设置输出数据
            connection.setDoOutput(true);
            //获取一个输出流,用来设置参数
            OutputStream outputStream=connection.getOutputStream();
            //将参数放入输出流中;
            outputStream.write(value.getBytes());
            //获取连接状态码
            int code=connection.getResponseCode();
            if(code==200){
                //获取请求返回的数据
                InputStream inputStream=connection.getInputStream();
                //将输入流转换为string
                BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
                String result="";
                String str=null;
                while((str=reader.readLine())!=null){
                    result+=str;
                }
                return  result;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }




        return  null;
    }

}

不要忘了加权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值