Androidとバックグラウンドネットワークが交互にピットを踏みます.
17130 ワード
Androidとバックグラウンドネットワークが交互にピットを踏みます.
Volly
jsonを使ってデータの伝送フォーマットとして前後交互に行います.まずAndroid公式標準装備のvollyを使ってデータをインタラクティブにします.公式に書かれたdemoに従って大丈夫です.公式demoアドレス:
https://developer.android.com/training/volley
しかし、自分が本当に使い始めた時に問題が発生しました.
私のurlは次の通りです
以下にvollyのデモのサンプルを一部添付します.
しかし、エラーが見つかったとしても、データベースに登場する中国語の文字、url中国語の文字をパラメータとして転送するなどいろいろなツールを試してみます.
Http
その後、私はokhttpを見つけました.
直接使うのは面倒くさいので、ギズブの上にオカルトのツールバッグを見つけました.とても簡潔で便利です.
このutilを使用して要求を行います.
このツールバッグはとても便利です.住所は以下の通りです.
https://github.com/burgessjp/okhttp-utils
csdnで発表されたツールバッグとソースコードの紹介として
Android OkHttpが完全に解析したのは、OkHttpを知る時です.
https://blog.csdn.net/lmj623565791/article/details/47911083
締め括りをつけるネットワークにおけるデータの相互作用は、中国語文字 を使用しないようにしてください.バージョンの問題は に注意してください.ツールがだめなら、早く に変えてください.
Volly
jsonを使ってデータの伝送フォーマットとして前後交互に行います.まずAndroid公式標準装備のvollyを使ってデータをインタラクティブにします.公式に書かれたdemoに従って大丈夫です.公式demoアドレス:
https://developer.android.com/training/volley
しかし、自分が本当に使い始めた時に問題が発生しました.
私のurlは次の通りです
String url = "http://172.20.10.4:9091/project_service/getNodes/ ";
公式に提供された方法を使って400のエラーを報告しています.最初はファイアウォールの問題だと思っていましたが、ファイアウォールを閉めて問題が解決されていません.また、方法を間違えたのではないかと思いました.公式から提供されたStringRequest、JsonObject Request、JsonArayRequestの三つの種類を試しました.Volly 400エラーStockOverflowでの最も一般的な説明は、要求ヘッダに下記のパラメータを入れ忘れてしまい、エラーが発生しました.headMap.put("Content-Type", "application/json; charset=utf-8");
しかし、要求ヘッドを追加して改善した後、エラーを報告し続けます.ツールを交換しなければなりません.以下にvollyのデモのサンプルを一部添付します.
// Volley
//
RequestQueue mQueue = Volley.newRequestQueue(this);
String url = "http://172.20.10.4:9091/project_service/getNodes/ ";
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
Request.Method.GET,
url,
null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
// Do something with response
//mTextView.setText(response.toString());
// Process the JSON
Log.e("response",response.toString());
textView.setText(response.toString());
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error){
// Do something when error occurred
Log.e("error",error.toString());
textView.setText("don't work");
}
}
){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
// return super.getHeaders();
Map<String,String> headMap = new TreeMap<>();
headMap.put("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3");
headMap.put("Accept-Encoding","gzip, deflate");
headMap.put("Accept-Language","zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7");
headMap.put("Content-Type", "application/json; charset=utf-8");
headMap.put("Cache-Control","no-cache");
headMap.put("Connection","keep-alive");
headMap.put("Host","192.168.1.102:9091");
headMap.put("Pragma","no-cache");
headMap.put("Upgrade-Insecure-Requests","1");
headMap.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36");
return headMap;
}
@Override
public String getBodyContentType() {
return "application/json";
}
};
//
jsonArrayRequest.setRetryPolicy(
new DefaultRetryPolicy
(3000,
3,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
//
mQueue.add(jsonArrayRequest);
最後に問題点を発見しました.要求されたurlの中に中国語の文字が現れました.エラーが発生しました.中国語ではない文字のurlをテストして要求した時も間違いがありませんでした.しかし、エラーが見つかったとしても、データベースに登場する中国語の文字、url中国語の文字をパラメータとして転送するなどいろいろなツールを試してみます.
Http
その後、私はokhttpを見つけました.
直接使うのは面倒くさいので、ギズブの上にオカルトのツールバッグを見つけました.とても簡潔で便利です.
このutilを使用して要求を行います.
OkHttpUtils
.get()
.url(url)
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
Log.e("Exception",e.toString());
textView.setText(e.toString());
}
@Override
public void onResponse(String response) {
Log.e("response",response);
textView.setText(response);
}
});
運転して確認しましたが、間違いがないです.このツールバッグはとても便利です.住所は以下の通りです.
https://github.com/burgessjp/okhttp-utils
csdnで発表されたツールバッグとソースコードの紹介として
Android OkHttpが完全に解析したのは、OkHttpを知る時です.
https://blog.csdn.net/lmj623565791/article/details/47911083
締め括りをつける