Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自Mapquest-Android应用程序的JSON响应不正确_Android_Json - Fatal编程技术网

来自Mapquest-Android应用程序的JSON响应不正确

来自Mapquest-Android应用程序的JSON响应不正确,android,json,Android,Json,我正在尝试使用mapquest api从mapquest获取JSON对象,并将其放入Android应用程序中。JSON请求规范如下所示 POST URL: http://www.mapquestapi.com/directions/v2/route?key=[YOUR_KEY_HERE] POST BODY: { locations:[ "State College, PA", "Lancaster, PA" ] } 以下代码成功建立了连接,但mapque

我正在尝试使用mapquest api从mapquest获取JSON对象,并将其放入Android应用程序中。JSON请求规范如下所示

POST URL:
http://www.mapquestapi.com/directions/v2/route?key=[YOUR_KEY_HERE]
POST BODY:   
{
    locations:[
    "State College, PA",
    "Lancaster, PA"
    ]
}
以下代码成功建立了连接,但mapquest的响应不正确

URL url_mapquest = new URL("http://www.mapquestapi.com/directions/v2/route?key=xxxxxxxxxxxx");

HttpURLConnection connection = (HttpURLConnection) url_mapquest.openConnection();
String urlParameters = "None";
connection.setRequestMethod("POST");
connection.setRequestProperty("USER-AGENT", "Mozilla/5.0");
connection.setRequestProperty("ACCEPT-LANGUAGE", "en-US,en;0.5");
connection.setDoOutput(true);

JSONObject jsonParam = new JSONObject();
try {
    JSONArray list = new JSONArray();
    list.put("State College, PA");
    list.put("Lancaster, PA");
    jsonParam.put("locations", list);
} catch (JSONException e) {
    e.printStackTrace();
}

System.out.println("JSON String: " + jsonParam.toString());

DataOutputStream dStream = new DataOutputStream(connection.getOutputStream());
dStream.writeBytes(jsonParam.toString());
dStream.flush();
dStream.close();
int responseCode = connection.getResponseCode();

System.out.println("\nSending 'POST' request to URL : " + url_mapquest);
System.out.println("Post parameters : " + urlParameters);
System.out.println("Response Code : " + responseCode);

final StringBuilder output_Mars = new StringBuilder("Request URL : " + url_mapquest);
output_Mars.append(System.getProperty("line.separator") + "Request Parameters : " + urlParameters);
output_Mars.append(System.getProperty("line.separator") + "Response Code : " + responseCode);
output_Mars.append(System.getProperty("line.separator") + "Type : " + "POST");

String line = "";
StringBuilder responseOutput = new StringBuilder();

if (responseCode != HttpURLConnection.HTTP_FORBIDDEN) {
    BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    System.out.println("output===============" + br);
    while ((line = br.readLine()) != null) {
        responseOutput.append(line);
    }
    br.close();
} else {
    responseOutput.append("Response Code 403 Forbidden");
}
下面是从android emulator捕获的错误响应

代码中可能有什么错误


参考文献:


将以下内容添加到连接属性中如何

connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Accept", "application/json");
emulator响应中的以下注释表明应用程序可能没有正确接收JSON对象

A JSONObject text must begin with a '{' at character 0 

有什么方法可以显示您发布到api的JSON(jsonParam.toString())吗?首先,看起来您没有包含所需的路由密钥,但如果看到类似于Ultradiv的JSON,则会有所帮助。@Ultradiv(jsonParam.toString()是{“位置”:[“宾夕法尼亚州州立大学”,“宾夕法尼亚州兰开斯特”]}@卡森先生,我故意把路线钥匙给xxxxx了