Post请求基本步骤

接着我的博客前后端交互来,接着我们事先使用Post请求完成操作。

get方法从服务器获取数据。post方法向服务器提交数据。

public class MainActivity extends AppCompatActivity {
    OkHttpClient okHttpClient=new OkHttpClient();
    private TextView textView;
    public String string=null;
    private String mBaseUrl="http://192.168.43.248:8080/OkHttp_Get/";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void doPost(View view){
            //post参数并不是拼接到url后面,而是作为请求体发送到服务端的。post方法需要传入一个RequestBody
            //get一般是从服务器获取一些数据,即使是传递参数也比较简单。直接拼接到url后面就可以了
            // post一般往服务器提交一些数据,提交表单注册信息,他所提交的一些数据比如说参数一般是作为请求体post到服务器端的。需要requestbody构造request。
            //如何构造request呢?它也有builder.
        textView=(TextView)findViewById(R.id.textView);
        //1.拿到okHttpClient对象
        FormEncodingBuilder requestBodyBuilder=new FormEncodingBuilder();
        //2.构造Request
        //2.1构造requestBody
        RequestBody requestBody=requestBodyBuilder.add("username","hyman").add("password","123").build();//它只有三个方法,仅仅是为了传递键值对的。
        Request.Builder builder=new Request.Builder();
        Request request= builder.url(mBaseUrl+"login").post(requestBody).build();
        //3  4
        executeRequest(request);
    }
    public void doGet(View view){
        textView=(TextView)findViewById(R.id.textView);
        //OkHttpClient okHttpClient=new OkHttpClient();
        Request.Builder builder=new Request.Builder();
        Request request=builder.get().url(mBaseUrl+"login?username=hyman&password=123").build();
        executeRequest(request);
    }

    private void executeRequest(Request request) {
        Call call = okHttpClient.newCall(request);

        call.enqueue(new Callback() {
            @Override
            public void onFailure(Request request, IOException e) {
                L.e("onFailure"+e.getMessage());
                e.printStackTrace();
            }

            @Override
            public void onResponse(Response response) throws IOException {
                L.e("onResponse:");
                //该方法的返回值是response,所以我们可以通过response拿到相关信息。
                string = response.body().string();//想拿到字符串,可以从response-body-string
                L.e(string);
                /*InputStream is=response.body().byteStream();//即使是一个文件我们这里也可以IO操作。容量也就是我们一个buffer大小。这样就支持大文件下载。*/
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        textView.setText(string);
                    }
                });
            }
        });
    }
}

点击Post按钮,在textview上出现Login success

MyEclipse控制台出现:hyman , 123

猜你喜欢

转载自blog.csdn.net/weixin_40512519/article/details/80091592