⑴ 如何獲取 httpclient 請求json 參數
import java.io.IOException;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
/**
*
*/
public class HttpClientUtil {
public static void main(String arg[]) throws Exception {
String url = "test.com";
JSONObject params = new JSONObject();
params.put("SRC_STM_CODE", "wsf");
params.put("TENANT_ID", "123");
params.put("NM", "張三");
params.put("BRTH_DT", "1983-01-20");
params.put("GND_CODE", "1");
JSONArray params2 = new JSONArray();
JSONObject param3 = new JSONObject();
param3.put("DOC_TP_CODE", "10100");
param3.put("DOC_NBR", "100200198301202210");
param3.put("DOC_CUST_NM", "test");
params2.add(param3);
params.put("DOCS", params2);
String ret = doPost(url, params).toString();
System.out.println(ret);
}
/**
httpClient的get請求方式2
* @return
* @throws Exception
*/
public static String doGet(String url, String charset)
throws Exception {
/*
* 使用 GetMethod 來訪問一個 URL 對應的網頁,實現步驟: 1:生成一個 HttpClinet 對象並設置相應的參數。
* 2:生成一個 GetMethod 對象並設置響應的參數。 3:用 HttpClinet 生成的對象來執行 GetMethod 生成的Get
* 方法。 4:處理響應狀態碼。 5:若響應正常,處理 HTTP 響應內容。 6:釋放連接。
*/
/* 1 生成 HttpClinet 對象並設置參數 */
HttpClient httpClient = new HttpClient();
// 設置 Http 連接超時為5秒
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
/* 2 生成 GetMethod 對象並設置參數 */
GetMethod getMethod = new GetMethod(url);
// 設置 get 請求超時為 5 秒
getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);
// 設置請求重試處理,用的是默認的重試處理:請求三次
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
String response = "";
/* 3 執行 HTTP GET 請求 */
try {
int statusCode = httpClient.executeMethod(getMethod);
/* 4 判斷訪問的狀態碼 */
if (statusCode != HttpStatus.SC_OK) {
System.err.println("請求出錯: "+ getMethod.getStatusLine());
}
/* 5 處理 HTTP 響應內容 */
// HTTP響應頭部信息,這里簡單列印
Header[] headers = getMethod.getResponseHeaders();
for (Header h : headers)
System.out.println(h.getName() + "------------ " + h.getValue());
// 讀取 HTTP 響應內容,這里簡單列印網頁內容
byte[] responseBody = getMethod.getResponseBody();// 讀取為位元組數組
response = new String(responseBody, charset);
System.out.println("----------response:" + response);
// 讀取為 InputStream,在網頁內容數據量大時候推薦使用
// InputStream response = getMethod.getResponseBodyAsStream();
} catch (HttpException e) {
// 發生致命的異常,可能是協議不對或者返回的內容有問題
System.out.println("請檢查輸入的URL!");
e.printStackTrace();
} catch (IOException e) {
// 發生網路異常
System.out.println("發生網路異常!");
e.printStackTrace();
} finally {
/* 6 .釋放連接 */
getMethod.releaseConnection();
}
return response;
}
/**
* post請求
* @param url
* @param json
* @return
*/
public static JSONObject doPost(String url,JSONObject json){
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
JSONObject response = null;
try {
StringEntity s = new StringEntity(json.toString());
s.setContentEncoding("UTF-8");
s.setContentType("application/json");//發送json數據需要設置contentType
post.setEntity(s);
HttpResponse res = client.execute(post);
if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
HttpEntity entity = res.getEntity();
String result = EntityUtils.toString(res.getEntity());// 返回json格式:
response = JSONObject.fromObject(result);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return response;
}
}
⑵ 圖書館下載書時顯示json異常
下載的方式不對
json文件下載失敗肯定是你下載的方式不對,只要找到network,可以看到頁面載入的各種文件,然後把想要下載的文件名在filter里輸入,就能找到想要下載的文件啦,然後雙擊文件就會自動下載了。JSON易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率,是一種輕量級的數據交換格式。
⑶ json數據解析出錯應該怎麼辦
JSON數據解析錯誤處理辦法如下:
-JSONValue failed. Error is: Unescaped control character [0x0D]
這個錯誤就是JSON解析的時候String 的時候出現轉義字元。
或者是在線工具生成的代碼,並不能保證百分百准確的。
⑷ 為什麼開電子發票時顯示安全接入返回json+數據異常
咨詢記錄 · 回答於2021-09-17
⑸ 分期樂為什麼顯示json解析異常
1、封裝的json格式有誤
2、在解析過程中,數據格式或者所對應的一些欄位不一致
3、也許跟網路環境有關
⑹ json解析失敗是網路問題嗎
是。
_son解析是客戶端和伺服器數據交換的格式,解析失敗一般是網路連接方式出現了問題,可以嘗試重新連接網路。
_son是一種輕量級的數據交換語言,以文字為基礎,且易於讓人閱讀,同時也方便了機器進行解析和生成。json採用完全獨立於程序語言的文本格式,但是也使用了類C語言的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。這些特性使json成為理想的數據交換語言。
⑺ json解析錯誤怎麼辦
1、先檢查json格式是否符合標准,各種轉義的地方容易出問題。
2、檢查編碼是否統一。
3、json的包有沒導錯。排除了,就是函數調用的問題了- -!看樣子傳入的是array數據,應該用jsonArray解析。JSONArray jsonArray = new JSONArray(jsonContent.toString());然後可以逐一讀取裡面的數據:JSONObject itemObj = jsonArray.getJSONObject(i)。
⑻ 網路異常,無法獲取數據怎麼弄
1、可能是因為手機所在的網路信號不好,可以換另外一個地方再上網。
2、手機網路設置沒設置好,可以換另外一個接入點來上網,比較原來用CMNET來上網,可以換成用CMWAP接入點來上網。
⑼ 手機的2g(gprs)網路無法獲取伺服器返回的json格式的數據
那你有沒有確認3g網路或者wifi網路是否可以獲取數據,如果其他網路可以獲取的話,你的代碼就沒有問題,可能是2g網路太慢了(也可能是你的數據量太多),你數據沒獲取結束就出現了異常,例如鏈接中斷異常等。。。
⑽ json格式錯誤怎樣解決
json格式錯誤解決方法:
1、在用org.json.JSONObject 解析從網路獲取的json數據時,遇到JSONException: java.lang.String cannot be converted to JSONObject,列印字元串,查看json字元串沒有問題;