读书人

android 联接网络

发布时间: 2012-09-19 13:43:54 作者: rapoo

android 连接网络

http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/11/a-simple-restful-client-at-android/
http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/11/a-simple-restful-client-at-android/
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
package praeda.muzikmekan;
?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
?
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
?
import android.util.Log;
?
public class RestClient {
?
??? private static String convertStreamToString(InputStream is) {
??????? /*
???????? * To convert the InputStream to String we use the BufferedReader.readLine()
???????? * method. We iterate until the BufferedReader return null which means
???????? * there's no more data to read. Each line will appended to a StringBuilder
???????? * and returned as String.
???????? */
??????? BufferedReader reader = new BufferedReader(new InputStreamReader(is));
??????? StringBuilder sb = new StringBuilder();
?
??????? String line = null;
??????? try {
??????????? while ((line = reader.readLine()) != null) {
??????????????? sb.append(line + "\n");
??????????? }
??????? } catch (IOException e) {
??????????? e.printStackTrace();
??????? } finally {
??????????? try {
??????????????? is.close();
??????????? } catch (IOException e) {
??????????????? e.printStackTrace();
??????????? }
??????? }
??????? return sb.toString();
??? }
?
??? /* This is a test function which will connects to a given
???? * rest service and prints it's response to Android Log with
???? * labels "Praeda".
???? */
??? public static void connect(String url)
??? {
?
??????? HttpClient httpclient = new DefaultHttpClient();
?
??????? // Prepare a request object
??????? HttpGet httpget = new HttpGet(url);
?
??????? // Execute the request
??????? HttpResponse response;
??????? try {
??????????? response = httpclient.execute(httpget);
??????????? // Examine the response status
??????????? Log.i("Praeda",response.getStatusLine().toString());
?
??????????? // Get hold of the response entity
??????????? HttpEntity entity = response.getEntity();
??????????? // If the response does not enclose an entity, there is no need
??????????? // to worry about connection release
?
??????????? if (entity != null) {
?
??????????????? // A Simple JSON Response Read
??????????????? InputStream instream = entity.getContent();
??????????????? String result= convertStreamToString(instream);
??????????????? Log.i("Praeda",result);
?
??????????????? // A Simple JSONObject Creation
??????????????? JSONObject json=new JSONObject(result);
??????????????? Log.i("Praeda","<jsonobject>\n"+json.toString()+"\n</jsonobject>");
?
??????????????? // A Simple JSONObject Parsing
??????????????? JSONArray nameArray=json.names();
??????????????? JSONArray valArray=json.toJSONArray(nameArray);
??????????????? for(int i=0;i<valArray.length();i++)
??????????????? {
??????????????????? Log.i("Praeda","<jsonname"+i+">\n"+nameArray.getString(i)+"\n</jsonname"+i+">\n"
??????????????????????????? +"<jsonvalue"+i+">\n"+valArray.getString(i)+"\n</jsonvalue"+i+">");
??????????????? }
?
??????????????? // A Simple JSONObject Value Pushing
??????????????? json.put("sample key", "sample value");
??????????????? Log.i("Praeda","<jsonobject>\n"+json.toString()+"\n</jsonobject>");
?
??????????????? // Closing the input stream will trigger connection release
??????????????? instream.close();
??????????? }
?
?
??????? } catch (ClientProtocolException e) {
??????????? // TODO Auto-generated catch block
??????????? e.printStackTrace();
??????? } catch (IOException e) {
??????????? // TODO Auto-generated catch block
??????????? e.printStackTrace();
??????? } catch (JSONException e) {
??????????? // TODO Auto-generated catch block
??????????? e.printStackTrace();
??????? }
??? }
?
}

2.如果你要连接两次那么一定记得加上:
System.setProperty("http.keepAlive", "false")
3.测试代码
import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ByteArrayEntity; 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; try { int TIMEOUT_MILLISEC = 10000; // = 10 seconds HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC); HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC); HttpClient client = new DefaultHttpClient(httpParams); HttpPost request = new HttpPost(serverUrl); request.setEntity(new ByteArrayEntity( postMessage.toString().getBytes("UTF8"))); HttpResponse response = client.execute(request); } catch (Exception e) { .... }

?

读书人网 >Android

热点推荐