得到HTML响应而不是Json响应

4
我收到的是HTML响应而不是JSON响应。我使用以下代码,但我收到的是HTML响应,如bf.readLine() 所示。这段代码有问题吗?还是API出了问题?
String uri = "http://192.168.77.6/Ivr_ABN_API/?id=" + mobile;
    URL url;
    Gson json = null;
    try {
        url = new URL(uri);
        json = new Gson();

        HttpURLConnection connection;
        access_token = db.getAccessTokenFromDB();
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");

        System.out.println("URL:" + uri);

        connection.setRequestProperty("Content-Type", "application/json");
        int status = connection.getResponseCode();
        resCode = Integer.toString(status);
        System.out.println("status is " + status);
        InputStream in = connection.getInputStream();
        System.out.println("inputStreamer " + in);
        BufferedReader bf = new BufferedReader(new InputStreamReader(
                connection.getInputStream()));
        System.out.println("bf.readLine() - " + bf.readLine());

        while ((output = bf.readLine()) != null) {
            JSONObject obj = new JSONObject(output);
            System.out.println("output is " + output);
            resCode = obj.getString("resCode");
            resDesc = obj.getString("COUNT");

        }
3个回答

13

或许可以尝试发送头部信息:Accept: application/json

如果这样做仍然无效,那么请查看API文档,看是否有其他应该发送以返回json文件格式的参数。


非常感谢。添加“Accept: application/json”可解决问题。 :) - dmaprasad
谢谢你的回答,它帮了我很多! - dice2011

1

针对java编程语言:

将请求属性设置为以下内容:

con.setRequestProperty("Accept","application/json")

它将解决你面临的问题。


2
虽然这个答案可能是正确的,但它没有解释为什么代码会解决问题,对于那些后来遇到类似问题的读者来说,这并不清晰。请清楚地描述答案。 - Sudheesh Singanamalla

0
如果有人在这里停下来,往往收到HTML作为响应是因为在您的fetch请求中没有调用有效的API请求方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接