2017-12-09 8 views
0

URL의 예 = http://webapi.example.com/api/order?data= 히트 발리에서 작업 브라우저 URL에서 작동하지 않는 {... 목록 [{...}를, {...}]} 위의 코드 I에 대한API 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()); 
     } 
    }); 

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; 
} 

위의 경우 서버에서 잘못된 응답이 항상 잘못 표시됩니다. 첫 번째 요청 메서드에서 요청을 복사하고 브라우저 URL을 사용하여 API를 누르십시오. 잘 돌아갔다.

편집 됨 :

초 방법으로 변경 한 후에, 상기 요청은 다음과 같은 것이다.

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

매개 변수 = { "주문 데이터": "{배달 시간 \": \ "2017-12-10 01:13:00 \", \ "주문 \ \ "1 \", \ "2 \", \ "offer_id \": \ "1 \", \ "type \": \ "1 \"}], \ "userID \" \ "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

예. 그것은 주문 데이터입니다 –

+0

당신이 오류 메시지를 게시 할 수 있다면, 문제를 디버깅하는 것이 도움이 될 것입니다. 또 하나의 질문은 두 코드 스 니펫 모두 400을 던집니까? – Deepak

+0

발리에서 오류가 없습니다. API의 오류 응답 –