Android与服务器网站交互(一)

来源:互联网 发布:linux 查看进程的流量 编辑:程序博客网 时间:2024/05/17 22:21

以获取城市天气信息为例

网络链接配置部分——通用

<span style="font-size:18px;">import java.io.IOException;import java.util.concurrent.TimeoutException;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.params.BasicHttpParams;import org.apache.http.params.HttpConnectionParams;import org.apache.http.params.HttpParams;import org.apache.http.util.EntityUtils;import android.content.Context;import android.widget.Toast;public class HttpUtil{private Context context;public HttpUtil(Context context) {this.context = context;}public String getWebContent(String url) throws TimeoutException {//创建一个http请求对象 HttpGet request=new HttpGet(url);//创建HttpParams以用来设置HTTP参数HttpParams httpParams=new BasicHttpParams();//设置连接超时或响应超时HttpConnectionParams.setConnectionTimeout(httpParams, 3000);//3s链接超时HttpConnectionParams.setSoTimeout(httpParams, 3000);//3s响应超时//创建一个网络访问处理对象△  HttpClient httpClient=new DefaultHttpClient(httpParams);//执行请求参数项 try {HttpResponse httpResponse=httpClient.execute(request); //判断是否请求成功 if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){return EntityUtils.toString(httpResponse.getEntity());}else{Toast.makeText(context, "网络访问失败,请稍后再试", Toast.LENGTH_SHORT).show();}}catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();Toast.makeText(context, "网络访问异常,请稍后再试", Toast.LENGTH_SHORT).show();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();Toast.makeText(context, "网络访问异常,请稍后再试", Toast.LENGTH_SHORT).show();}//释放网络连接资源  finally{httpClient.getConnectionManager().shutdown();}return null;}}</span>

通过网址获取信息——具体情况具体分析

<span style="font-size:18px;">import java.io.UnsupportedEncodingException;import java.util.concurrent.TimeoutException;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.os.StrictMode;import android.util.Log;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();StrictMode.setThreadPolicy(policy);super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);HttpUtil httpUtil=new HttpUtil(this);try {String content = null;try {content = new String(httpUtil.getWebContent("http://www.weather.com.cn/data/sk/101030300.html").getBytes("utf-8"),"UTF-8");//同时设置string编码} catch (UnsupportedEncodingException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}try {JSONObject result = new JSONObject( content);JSONObject weatherinfo = new JSONObject(result.getString("weatherinfo"));    Log.e("获取的信息", content);Log.e("获取的信息", weatherinfo.getString("cityid"));} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (TimeoutException e) {// TODO Auto-generated catch blockToast.makeText(getApplicationContext(), "网络链接超时,请检查你的网络", Toast.LENGTH_SHORT).show();e.printStackTrace();}}}</span>



0 0
原创粉丝点击