Androidstudio jackson和httpcliet
webservice->xml
jackson->json
從第三方專案中拿資料通常有兩種方式(根據資料互動的格式來定) xml->webservice/httpClient json->httpClient java java java android java ios java 微信
jackson 1.1 Java->Json 1.1.1 ObjectMap 1.1.2 JsonGenerator 1.1.3 @JsonIgnore hibernate中一對多、多對多雙向關聯會出現這種死迴圈
簡介 2.1 HttpClient是Apache Jakarta Common下的子專案,用來提供高效的、最新的、 功能豐富的支援HTTP協議的客戶端程式設計工具包,並且它支援HTTP協議最新的版本和協議。 2.2 Android已成功集成了HttpClient,這意味這開發人員可以直接在Android應用中使用 HtppClient來提交請求、接收響應
注:在API 23中,Google已經移除了移除了Apache HttpClient相關的類 , 在build.gradle中的android {}中加上 useLibrary ‘org.apache.http.legacy’ 詳情見資料“”
httpclient的作用是在後臺模擬,瀏覽訪問後臺程式碼的操作 案例一:HttpClient的使用步驟
HttpClient的使用步驟 3.1 建立HttpClient物件 HttpClient httpClient = new DefaultHttpClient();
3.2 建立HttpGet(或HttpPost)物件
HttpGet HttpGet = new HttpGet(“
3.3 新增引數(可選) setParams(HttpParams params)//HttpGet和HttpPost共有 setEntity(HttpEntity entity)//HttpPost獨有
List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("age", "20")); params.add(new BasicNameValuePair("like", "aa")); params.add(new BasicNameValuePair("like", "bb")); params.add(new BasicNameValuePair("like", "cc")); params.add(new BasicNameValuePair("newsCategoryId", "1")); HttpEntity paramEntity = new UrlEncodedFormEntity(params,"UTF-8"); httpPost.setEntity(paramEntity);
3.4 傳送GET(或POST)請求,並獲得響應 HttpResponse httpResponse = httpClient.execute(HttpUriRequest request);
注1:HttpUriRequest為HttpGet和HttpPost的父類 注2:需要新增允許網路訪問許可權,不然會報錯“java.lang.SecurityException: Permission denied (missing INTERNET permission?)”
注3:如果地址錯誤,或伺服器未開戶,HttpClient這SB會等待N久(>24小時)。 所以請記得設定超時時間,所以請記得設定超時時間,所以請記得設定超時時間 所以請記得設定超時時間,所以請記得設定超時時間,所以請記得設定超時時間 所以請記得設定超時時間,所以請記得設定超時時間,所以請記得設定超時時間 另外HttpClient版本不一樣,程式碼也不一樣。下面的4.0版本的寫法 httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000);// 連線時間 httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 2000);// 資料傳輸時間
3.5 處理響應 3.5.1 響應狀態碼(200) httpResponse.getStatusLine().getStatusCode()
3.5.2 響應頭 getAllHeaders()/getHeaders(String name)
3.5.3 響應內容 HttpEntity httpEntity = httpResponse.getEntity();//此物件包含伺服器的響應內容 String result = EntityUtils.toString(httpEntity);
案例二:使用HttpClientUtils與伺服器通訊 4. Android客戶端與伺服器通訊 4.1 JSON資料交換 android系統內建了物件json的支援,另外json其實就以下幾個物件的使用: JSONObject、JSONArray、JSONStringer、JSONException 4.2 web service,底層使用xml交換資料
關於org.apache.http.conn.HttpHostConnectException: Connection to refused錯誤的解決辦法 增加網路訪問許可權: 找到 AndroidManifest.xml 檔案。在application標籤後面加上 檢查ip地址: 啟動的android模擬器吧自己也當成127.0.0.1和localhost,如果使用了localhost或者127.0.0.1則會被拒絕訪問, 把ip地址改成實際地址,如:192.168.1.5 核心內容(Android呼叫Java,完成查詢單個以及修改的功能) 1、準備一個Java端的程式 2、通過httpclient呼叫Java端資料 3、將json串轉成物件