2017-01-21 6 views
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); 


} 

コードは手動でデータを追加したが、この方法では機能しませんでした。何が問題なの?

答えて

0
public void detectlanguage(Context context, final String str) { 


String url = String.format("http://ws.detectlanguage.com/0.2/detect"); 

JSONObject jsonObject = new JSONObject(); 
try{ 
    jsonObject.put("first_name", "S"); 
    jsonObject.put("last_name", "K"); 
} 

catch(Exception e) 
{} 

//3rd Parms not null if your have parms 
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, jsonObject, 
     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); 
} 
+0

私はここで何をしようとしていますか? –

+0

URLを使用してパラメータを送信するかどうか –

+0

はい、私は、サーバーから取得している応答が "無効なApiキー"ですが、キーは郵便配達員と正常に動作します。 –

関連する問題