Android——网络 GET请求+POST请求

Android——网络  GET请求+POST请求

获取数据用GET请求   ??

增删改查修改数据用POST请求

package com.example.jreduch07;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class HttpActivity extends AppCompatActivity {
public EditText  et;
    private Button search;
    private Button search1;
    private TextView show;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_http);
        et=(EditText)findViewById(R.id.et);
        search=(Button)findViewById(R.id.search);
        search1=(Button)findViewById(R.id.search1);
        show=(TextView)findViewById(R.id.show);
        search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String url="http://192.168.1.48:8080/HttpTest/index.jsp?option=getUser&uName=jerehedu";
                new  MyGetJob().execute(url);
            }
        });
        search1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String[] arg=new String[2];
                arg[0]="http://192.168.1.48:8080/HttpTest/index.jsp";
                arg[1]="option=getUser&uName=jerehedu";
                new MyPostJob1().execute(arg);
            }
        });
    }

    private  class MyPostJob1 extends AsyncTask<String,Void,String>{
    @Override
    protected String doInBackground(String... strings) {
        HttpURLConnection con=null;
        InputStream is=null;
        StringBuilder sbd=new StringBuilder();
        try {
            URL url=new URL(strings[0]);
            con= (HttpURLConnection) url.openConnection();
            con.setConnectTimeout(5*1000);
            con.setReadTimeout(5*1000);
            con.setRequestMethod("POST");
            con.setDoInput(true);
            con.setDoOutput(true);
            con.setUseCaches(false);
            con.setRequestProperty("Charset","UTF-8");
            con.setRequestProperty("Content-type","application/x-www-form-urlencoded");

//            con.setRequestProperty("Charset","UTF-8");
//            con.setRequestProperty("Content-type","application/x-www-from-urlencoded");
            //params应该是这样的=》option=getUser&uName=jerehedu
            String params=strings[1];
            OutputStream os=con.getOutputStream();   //数据传输  流
            os.write(params.getBytes());
            os.flush();
            os.close();
            if (con.getResponseCode()==200) {
              is=con.getInputStream();
                int next = 0;
                byte[] b = new byte[1024];
                while ((next = is.read(b)) > 0) {

                    sbd.append(new String(b, 0, next));
                }
            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (is!=null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (con!=null){
                    con.disconnect();  //断开连接
                }
            }
        }

        return sbd.toString();
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        show.setText("POST请求结果:"+s);
    }
}
    /*
    AsyncTask异步任务类
    异步任务类的第一个参数会传到doInBackground方法中
    第三个参数
              #指定doINBackground方法的返回值
              #doINBackground方法的返回值会被OnPostExecute接收

     */
        private class MyGetJob extends AsyncTask<String, Void, String> {
            //onPreExecute在主线程中执行命令
            //进度条的初始化
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }

            //doInBackground在子线程中执行名命令
            @Override
            protected String doInBackground(String... strings) {
                HttpURLConnection con = null;
                InputStream is = null;
                StringBuilder sbd = new StringBuilder();
                try {
                    URL url = new URL(strings[0]);
                    con = (HttpURLConnection) url.openConnection();
                    con.setConnectTimeout(5 * 1000);
                    con.setReadTimeout(5 * 1000);
                /*
                *http相应200:成功
                * 404未找到
                * 500发生错误
                 */
                    if (con.getResponseCode() == 200) {
                        is = con.getInputStream();
                        int next = 0;
                        byte[] bt = new byte[1024];
                        while ((next = is.read(bt)) > 0) {

                            sbd.append(new String(bt, 0, next));
                        }
                    }

                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if (is != null) {
                        try {
                            is.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        if (con != null) {
                            con.disconnect();  //断开连接
                        }
                    }
                }

                return sbd.toString();
            }

            //onPostExecute在UI线程中执行命令  主线程
            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                show.setText(s);
            }
        }
    }
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context="com.example.jreduch07.HttpActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名!"
        android:textSize="20dp"
        android:layout_alignTop="@+id/et"
        android:layout_alignParentStart="true"
        android:layout_alignBottom="@+id/et"
        android:id="@+id/textView" />
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="请输入要查找姓名"
        android:id="@+id/et"
        android:layout_alignBottom="@+id/search"
        android:layout_centerHorizontal="true" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查询(GET方法)"
        android:id="@+id/search"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="#fff30d"
        android:id="@+id/show"
        android:textSize="30sp"
        android:text="查询结果:"
        android:layout_below="@+id/search1"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查询(post方法)"
        android:id="@+id/search1"
        android:layout_below="@+id/et"
        android:layout_alignParentEnd="true" />
</RelativeLayout>

时间: 2024-10-16 11:08:36

Android——网络 GET请求+POST请求的相关文章

教你写Android网络框架之Http请求的分发与执行

前言 在<教你写Android网络框架>专栏的前两篇博客中,我们已经介绍了SimpleNet框架的基本结构,以及Request.Response.请求队列的实现,以及为什么要这么设计,这么设计的考虑是什么.前两篇博客中已经介绍了各个角色,今天我们就来剖析另外几个特别重要的角色,即NetworkExecutor.HttpStack以及ResponseDelivery,它们分别对应的功能是网络请求线程.Http执行器.Response分发,这三者是执行http请求和处理Response的核心. 我

Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所帮助. 首先按照惯例先来简单了解一些AsyncHttpClient网络框架的一些知识. 1.简介 Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-a

Android网络编程之http发送/请求服务

最近在学习Android网络编程的知识,以下是今晚学习的一些心得.与大家共同分享. 在实际的应用开发中很多时候需要app向服务器请求数据,那么app如何发送请求呢?下面的代码就是其中的一种情况,使用HttpURLConnection向服务器发送请求的数据,然后处理服务器返回的数据. 下面的代码只是客户端的一个简答测试代码.还需要在pc上安装一个 tomcat服务器 ,然后将demo中的jsp文件部署到tomcat上,具体的方法百度一下便知. package com.lee.nethttp; im

Android网络框架OkHttp之get请求(源码初识)

概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天又发布了.以下以OkHttp3.2版本为准,没办法,上个星期看的时候还是以3.2为最新版本的.首先,我们要先了解一些背景,OkHttp这个框架是有Square公司推出的,进入官网.如果想看API,点击进入API.大概了解了OkHttp之后,我们应该知道OkHttp是一个网络框架,想想以前在开发中,网

Volley网络请求框架简析——Android网络请求框架(三)

题记-- 人来到这个世界上,只有两件事情,生与死, 一件事完了,另一件事还急什么? 有缘而来,无缘而去, 识自本心,见自本性 不起妄缘,无心无为 自由自在,动静自如 冷暖自知,则是修行 1.初始化一个消息请求队列以及网络请求工具类对象 /** * Created by androidlongs on 16/7/1. * 网络请求访问框架 */ public class VollyRequestUtils { /** * Volley框架使用工具类对象 */ private static Voll

Android网络请求心路历程

HTTP请求&响应 既然说从入门级开始就说说Http请求包的结构.一次请求就是向目标服务器发送一串文本.什么样的文本?有下面结构的文本.HTTP请求包结构 例子: 1 2 3 4 5 6 7     POST /meme.php/home/user/login HTTP/1.1     Host: 114.215.86.90     Cache-Control: no-cache     Postman-Token: bd243d6b-da03-902f-0a2c-8e9377f6f6ed   

Http与Android网络请求的几种协议

HTTP深入浅出 http请求 HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.

Android网络编程(七)源码解析OkHttp前篇[请求网络]

相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection Android网络编程(三)Volley用法全解析 Android网络编程(四)从源码解析volley Android网络编程(五)OkHttp2.x用法全解析 Android网络编程(六)OkHttp3用法全解析 前言 学会了OkHttp3的用法后,我们当然有必要来了解下OkHttp3的源码,当然现在网上的文章很多,我仍旧希望我这一系列文章篇是最简洁易懂

Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发

Android 网络请求一般都涉及到图片和JSON数据,怎样快速的请求网络JSON数据,解析JSON数据,并且一步生成自己想要的Java bean实体类?这个涉及到Android 开发效率的问题.由于接触Android 网络这方面比较多,自然就找到一些好的方法来快速开发Android 网络模块的相关内容,接下来就为大家揭晓 一步快速请求,解析JSON 数据生成对应的Java bean实体类的方法. 注:我们先把思路讲解下吧: 1.网络请求JSON数据代码可以自己写,当然我还是推荐使用网络上开源的