0
私は、サーバーからJsonデータを取得するためにvolleyを使用しています。これは、テキストおよびAPIキーをパラメータとして受け取る検出言語APIです。リクエストを送信するとき、APIからの応答は「キーが無効です」ということです。私は郵便配達員にそれをチェックして、キーは正常に動作します。ボレーを使用してサーバーからの応答を取得するにはどうすればよいですか?
ここは私のコードです。
public void detectlanguage(Context context, final String str) {
String url = String.format("http://ws.detectlanguage.com/0.2/detect");
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, null,
new com.android.volley.Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
res = response.toString();
try {
JSONObject jsonObject = new JSONObject(res);
Log.i((TAG), jsonObject.toString());
jsonArray = jsonObject.getJSONObject("data").getJSONArray("detections");
string = jsonArray.getJSONObject(0).getString("language");
} catch (Exception e) {
e.printStackTrace();
}
Toast.makeText(TakePicture.this, string, Toast.LENGTH_LONG).show();
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>(2);
params.put("q", str);
params.put("key", key);
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
final HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "form-data;boundary=" + BOUNDARY);
return headers;
}
};
AppController.getInstance().addToRequestQueue(jsonObjectRequest, TAG);
}
コードは手動でデータを追加したが、この方法では機能しませんでした。何が問題なの?
私はここで何をしようとしていますか? –
URLを使用してパラメータを送信するかどうか –
はい、私は、サーバーから取得している応答が "無効なApiキー"ですが、キーは郵便配達員と正常に動作します。 –