應用所有對php服務器的http請求,在5.1下正常,在4.4、4.0下不正常。
測試過3台手機和模擬器確認是系統版本問題,與機型無關。
比如在服務器返回福建省份的成績名單時,5.1機型接收到的內容是:(PC上返回的也是這個結果)
{"num":"9","city":{"1":"廈門","2":"泉州","3":"福州","4":"南平","5":"寧德","6":"漳州","7":"三明","8":"龍巖","9":"莆田"}}
而4.4、4.1接收到的內容則是:
{"num":"0","city":{}}
後來我讓服務端輸出數據庫查詢記錄集的行數$numcount。一樣的服務端代碼,5.1收到的是正確的行數,和數據庫裡一致,4.4收到的則是0。百思不得其解啊!!
客戶端的代碼都是類似的,都是在進程中執行然後handler接收消息,照這個現象看不是handler的問題。或許可能是客戶端代碼問題?請各位幫忙看一看。
Thread thread = new Thread(){
@Override
public void run(){
try{
String link = "http://example.com/search_item.php");
link = link + "&item=" + item;
URL url = new URL(link);
HttpURLConnection conn= (HttpURLConnection)url.openConnection(); conn.connect();
InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String info = null;
info = reader.readLine();
Message msg = Message.obtain();
msg.obj = info;
handler.sendMessage(msg);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
};
thread.start();
可以試試從三個方向考慮
1)Server,在發送代碼執行的最後一步打印一下發送的內容,確認確實是在所有的情況下都把數據發送出去了。
而且沒有對UE版本進行檢查。
2)傳輸過程中,如果有模擬器的話可以試試在本機抓一下wireshark log,看看傳輸過程中是不是有什麼問題。
3)Client端,如果針對不同版本,接收不到內容,可以試試在不好用的Client端去請求一下不同server的別的內容,看看是不是好用。
如果同樣的代碼,針對別的內容好用,那問題大概還是出在Server端。