Http 请求分为 POST和GET这两种请求方式,在android开发中,我们可能会使用第三方的库进行网那个罗请求,但是这种基础的网络请求还是有必要学一下的,下面是我的实现代码:
public class HttpDownload {
String uri = "https://api.thinkpage.cn/v2/weather/all.json?city=北京&language=zh-chs&unit=c&aqi=city&key=****";
HttpGet httpGet;//***shi
HttpClient httpClient;
HttpResponse httpResponse;
public String getContextFromURIByGet() {
httpGet = new HttpGet(uri);
httpClient = new DefaultHttpClient();
try {
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 20000);
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 20000);
httpResponse = httpClient.execute(httpGet);
HttpEntity entity = httpResponse.getEntity();
InputStream inputStream = entity.getContent();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
String result = "";
while (null != (line = bufferedReader.readLine())) {
result += line;
}
Log.e("test", "Http Response result is " + result);
return result;
} catch (Exception e) {
e.printStackTrace();
Log.e("test", "Http Response error URI is " + uri);
return "Http Response error URI is " + uri;
}
}
public JSONObject getContextFromURIByPost() {
try {
HttpPost httpPost = new HttpPost(uri);
httpPost.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,20000);
httpPost.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,20000);
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "benben");
jsonObject.put("password", "123");
StringEntity stringEntity = new StringEntity(jsonObject.toString());
httpPost.setEntity(stringEntity);
HttpResponse httpResponse = new DefaultHttpClient().execute(httpPost);
String result = EntityUtils.toString(httpResponse.getEntity());
JSONObject jsonObjectResult = new JSONObject(result);
return jsonObject;
} catch (Exception e) {
e.printStackTrace();
Log.e("test", "Http Response error URI is " + uri);
return null;
}
}
}
activity :
public class MainActivity extends Activity {
private TextView textView;
Handler handler;
{
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
textView.setText(msg.getData().getString("get"));
break;
}
}
};
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.hello);
new Thread() {
@Override
public void run() {
super.run();
HttpDownload httpDownload = new HttpDownload();
String result = httpDownload.getContextFromURIByGet();
Message message = Message.obtain();
message.what = 1;
Bundle bundle = new Bundle();
bundle.putString("get", result);
message.setData(bundle);
handler.sendMessage(message);
}
}.start();
这样就可以实现最原始的http请求了