最近学习了网络通信方面的知识,了解到Volley网络框架,相比于Httpclient要简单很多。
https://github.com/mcxiaoke/android-volley
Gradle
compile 'com.mcxiaoke.volley:library:1.0.19'
MainActivity:
package com.example.administrator.myapplication;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends ActionBarActivity {
private Button btn_postHttp, btn_get;
private TextView tvResponse;
private RequestQueue mQueue = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_postHttp = (Button) findViewById(R.id.btn_post);
tvResponse = (TextView) findViewById(R.id.textView);
mQueue = Volley.newRequestQueue(getApplicationContext());
btn_postHttp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
StringRequest stringRequest = new StringRequest(Request.Method.POST, "urlName",
new Response.Listener<String>() {//urlName改为网站提供的接口
@Override
public void onResponse(String response) {
Log.d("TAG", response);
tvResponse.setText(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("TAG", error.getMessage(), error);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
map.put("str", "test");
return map;
}
};
mQueue.add(stringRequest);
}
});
btn_get = (Button) findViewById(R.id.btn_get);
btn_get.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
StringRequest stringRequest = new StringRequest("http://www.baidu.com",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
tvResponse.setText(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("error","请求错误:" + error.toString());
}
});
mQueue.add(stringRequest);
}
});
}
}
activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context="com.example.administrator.myapplication.MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="get"
android:id="@+id/btn_get" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="post"
android:id="@+id/btn_post"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollView"
android:layout_gravity="center_vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="20sp"
android:id="@+id/textView" />
</ScrollView>
</LinearLayout>
效果图:
P.S.:
Josn格式的也可以写在StringRequest里,只要将Map改一下就可以了
@Override
protected Map<String, String> getParams() throws AuthFailureError {
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("userId", Integer.parseInt(tvId.getText().toString()));
jsonObject.put("addTime", System.currentTimeMillis());
jsonObject.put("bt", Float.parseFloat(tvTempture.getText().toString()));
jsonObject.put("hr", Integer.parseInt(tvHeartBeat.getText().toString()));
jsonObject.put("danger", false);
} catch (Exception e) {
Log.d("tag", e + "");
}
Map<String, String> map = new HashMap<String, String>();
map.put("jsonParameter", jsonObject.toString());
return map;
}