繁体   English   中英

400-Apache POST发送JSON时的错误请求

[英]400 - Bad Request on Apache POST sending JSON

我正在尝试使用Apache从我的班级进行REST调用。 但是当我打印REST服务的响应时,它给出了400异常。 请在下面找到代码,让我知道要使其生效需要进行的更改,

    List<NameValuePair> pickup = new ArrayList<NameValuePair>();
    ArrayList<HashMap> pickupItemList = new ArrayList<HashMap>();

    String [] productIds = prop.getArray("vproductIDs");
    String [] quantities = prop.getArray("vquantities");
    String [] tprices = prop.getArray("vtprices");
    String [] bprices = prop.getArray("vbprices");

    HashMap pickupObjMap = new HashMap<String, Object>();
    pickupObjMap.put("loyaltyId",prop.getString("loyaltyId"));
    pickupObjMap.put("loyaltyFName",prop.getString("loyaltyFName"));
    pickupObjMap.put("orderId",prop.getString("orderId"));
    pickupObjMap.put("locationId",prop.getString("locationId"));
    pickupObjMap.put("consignmentId",prop.getString("consignmentId"));
    pickupObjMap.put("description",prop.getString("description"));
    pickupObjMap.put("retailerId",prop.getString("retailerId"));
    pickupObjMap.put("pickupType",Integer.parseInt(prop.getString("pickupType")));
    pickupObjMap.put("email",prop.getString("email"));
    pickupObjMap.put("loyaltyLName",prop.getString("loyaltyLName"));
    pickupObjMap.put("status",prop.getString("status"));

    for(int i=0; i<productIds.length ; i++){
        HashMap map = new HashMap<String, Object>();
        map.put("sku", productIds[i]);
        map.put("quantity", Double.parseDouble(quantities[i]));
        map.put("totalPrice", Double.parseDouble(tprices[i]));
        map.put("basePrice", Double.parseDouble(bprices[i]));
        pickupItemList.add(map);
    }
    pickup.add(new BasicNameValuePair("pickupItemList", pickupItemList.toString()));
    pickup.add(new BasicNameValuePair("pickupObj", pickupObjMap.toString()));
    pickup.add(new BasicNameValuePair("ovclid", prop.getString("ovclid")));

        HttpPost httppost = new HttpPost("Target URL");
        try {
            httppost.setEntity(new UrlEncodedFormEntity(pickup));
            httppost.setHeader("Content-Type", "application/json");
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(entity.getContent()));
            if (bufferedReader != null) {
                int cp;
                StringBuilder sb = new StringBuilder();
                while ((cp = bufferedReader.read()) != -1) {
                    sb.append((char) cp);
                }
                System.out.println("String Response......."+sb);
                bufferedReader.close();
            }
            System.out.println("Response......."+entity.getContent());
        } catch (Exception e) {
            e.printStackTrace();

        }

以下是我进行REST调用时得到的响应。

Unexpected character ('p' (code 112)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') 
at [Source: org.glassfish.jersey.message.internal.EntityInputStream@175d5e8a; line: 1, column: 2]

如“ POST”中所示的意外字符“ P”,看起来服务器返回html而不是json。 您可以检查服务器日志并查看任何异常吗? 返回类型是什么-应该是json

post.setHeader("Content-type", "application/json");

如果您使用的是玻璃鱼,则可能偶然发现了该错误https://netbeans.org/bugzilla/show_bug.cgi?id=231159

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM