接着我的博客前后端交互来,接着我们事先使用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