2017-12-09 34 views
0

URLの例を打つ= http://webapi.example.com/api/order?data= {...リスト[{...}、{...}]}上記のコードの場合APIのURLボレーで作業し、ブラウザのURLで動作していないが

GsonRequest request = new GsonRequest<OrderResponse>("URL example", null, 
      OrderResponse.class, null, new Response.Listener<OrderResponse>() { 
     @Override 
     public void onResponse(OrderResponse response) { 
      if (response.isSuccess()) { 
       //sendNotification(); 
      } else { 
       Toast.makeText(DeliveryManagementActivity.this, "Error in Server", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.e("Error: " + error.getMessage()); 
     } 
    }); 

I 400エラーが発生しています。

GsonRequest request = new GsonRequest<OrderResponse>(UrlConstants.SEND_ORDERS_URL, getParams(), 
      OrderResponse.class, header, new Response.Listener<OrderResponse>() { 
     @Override 
     public void onResponse(OrderResponse response) { 
      if (response.isSuccess()) { 
       sendNotification(); 
      } else { 
       Toast.makeText(DeliveryManagementActivity.this, "Error in Server", Toast.LENGTH_SHORT).show(); 
      } 
      hideLoader(); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      error.printStackTrace(); 
      VolleyLog.e("Error: " + error.getMessage()); 
      Toast.makeText(DeliveryManagementActivity.this, "Error " + error.getMessage(), Toast.LENGTH_SHORT).show(); 
      hideLoader(); 
     } 
    }); 

public Map<String, String> getHeaders() throws AuthFailureError { 
    HashMap<String, String> headers = new HashMap<String, String>(); 
    headers.put("Content-Type", "application/json"); 
    return headers; 
} 

private Map<String, String> getParams() { 
    Map<String, String> params = new HashMap<String, String>(); 
    params.put("orderData", requestData.getOrderRequest(requestData)); 

    return params; 
} 

上記の場合、私は常にサーバーから間違った応答を得ています。 1回目のリクエストメソッドからのリクエストをコピーし、ブラウザのURLを使用してAPIにヒットしました。それはうまくいった。

編集は:

第二の方法に変更した後、要求は以下のように起こっています。

url = www.url.com/addOrder.php?

params = {"orderData": "{\" deliveryTime \ ":\" 2017-12-10 01:13:00 \ "、\" orderDetail \ ":\" courseId \ ": \ "1 \"、\ "1 \"、\ "1 \"、\ "2 \"、\ "offer_id \":\ " :\ "7 \"、\ "userLocation \" \ "17 \"} "}

orderDataもJSON内部解析および=を欠落

。それが問題ですか?質問の先頭にあるURLは実際のもので、動作しています。

答えて

0

URLをエンコードした後、問題は解決されます。

try { 
     param = URLEncoder.encode("json", "utf-8"); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 

String url = baseUrl + params; 

GsonRequest request = new GsonRequest<OrderResponse>(url, null, 
     OrderResponse.class, null, new Response.Listener<OrderResponse>() { 
    @Override 
    public void onResponse(OrderResponse response) { 
     if (response.isSuccess()) { 
      //sendNotification(); 
     } else { 
      Toast.makeText(DeliveryManagementActivity.this, "Error in Server", Toast.LENGTH_SHORT).show(); 
     } 
    } 
}, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     VolleyLog.e("Error: " + error.getMessage()); 
    } 
}); 
0

クエリのパラメータ名はです。orderData? URLで使用されるクエリパラメータはデータです。 その他のコードは正常です。

+0

はい。それはorderData –

+0

です。エラーメッセージを投稿できる場合は、この問題をデバッグすると便利です。もう1つの質問は、コードスニペットが両方とも400をスローしますか? – Deepak

+0

ボレーからのエラーはありません。 APIからのエラー応答。 –

関連する問題