Android客戶端與服務器HTTP交互,數據以json格式傳輸
/*** HTTP請求服務器 * @author lz */ public class HttpRequestServer{ private String serverCategoryStr = "http://192.168.1.2:8080/ChatXXX/";// 服務器地址 private String url = "http://192.168.1.4:8080/ChatXXX/login"; private static final int REQUEST_TIMEOUT = 1 * 1000;// 設置請求超時10秒鐘 private static final int SO_TIMEOUT = 5 * 1000; // 設置等待數據超時時間10秒鐘 private static final int type=-1;//請求Type public HttpRequestServer() { } /** * 用戶登錄 * @param name * @param pwd * @return * @throws ClientProtocolException * @throws JSONException * @throws IOException */ public JSONObject login(String name, String pwd) throws ClientProtocolException, JSONException, IOException { url = serverCategoryStr + Constants.URL_LOGIN; JSONObject param = new JSONObject(); param.put(Constants.TYPE, Constants.LOGIN); param.put(Constants.USER_NAME, name); param.put(Constants.USER_PASSWORD, pwd); return requestServer(Constants.LOGIN, param); } /** * 通用請求服務器函數 * @param userId * @param name * @param pwd * @param requestType * @param status * @return * @throws JSONException * @throws ClientProtocolException * @throws IOException */ private JSONObject requestServer(String requestType,JSONObject param) throws JSONException, ClientProtocolException, IOException { // 不加這一段則會報錯,錯誤信息為android.os.networkonmainthreadexception // 在Android2.2以后必須添加以下代碼 // 本應用采用的Android4.0 // 設置線程的策略 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .permitAll() // 此處為允許磁盤讀寫和網絡訪問 .penaltyLog() // 打印logcat,當然也可以定位到dropbox,通過文件保存相應的log .build()); HttpPost request = new HttpPost(url); // 綁定到請求 Entry StringEntity se = new StringEntity(param.toString(),"utf-8"); request.setEntity(se); // 發送請求 HttpClient httpclient = getHttpClient(); HttpResponse httpResponse = httpclient.execute(request); JSONObject result = null; int code=httpResponse.getStatusLine().getStatusCode(); if (code == 200) { // 得到應答的字符串,這也是一個 JSON 格式保存的數據 String retSrc = null; retSrc = EntityUtils.toString(httpResponse.getEntity(),"utf-8"); JSONObject jtmpJsonObject = new JSONObject(retSrc); String str = jtmpJsonObject.getString("dataMap");// 此處"dataMap"與服務器關聯 result = new JSONObject(str); } return result; } private HttpClient getHttpClient() { BasicHttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, REQUEST_TIMEOUT); HttpConnectionParams.setSoTimeout(httpParams, SO_TIMEOUT); HttpClient httpclient = new DefaultHttpClient(httpParams); return httpclient; } </pre><br />
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!