使用Java的Imgur API请求返回400状态

使用Java的Imgur API请求返回400状态,java,get,imgur,Java,Get,Imgur,我正在尝试向Imgur API发送GET请求以上载图像 当我使用以下代码时,我收到来自Imgur服务器的400状态响应-根据,这意味着我缺少或参数不正确 我知道这些参数是正确的,因为我已经在浏览器URL中直接测试了它们(成功上传了一个图像)-所以我一定没有在代码中正确添加参数: private void addImage(){ String data = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode("http

我正在尝试向Imgur API发送
GET
请求以上载图像

当我使用以下代码时,我收到来自Imgur服务器的
400
状态响应-根据,这意味着我缺少或参数不正确

我知道这些参数是正确的,因为我已经在浏览器URL中直接测试了它们(成功上传了一个图像)-所以我一定没有在代码中正确添加参数:

private void addImage(){
    String data = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode("http://www.lefthandedtoons.com/toons/justin_pooling.gif", "UTF-8");
    data += "&" + URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode("myPublicConsumerKey", "UTF-8");

    // Send data
    java.net.URL url = new java.net.URL("http://api.imgur.com/2/upload.json");
    URLConnection conn = url.openConnection();
    conn.setDoOutput(true);
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    wr.write(data);
    wr.flush();

    // Get the response
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = rd.readLine()) != null) {
        Logger.info( line );
    }
    wr.close();
    rd.close();
}
此代码基于API示例

有谁能告诉我我做错了什么,以及如何解决问题

谢谢。

在此示例中,imgur服务返回400个错误的请求状态响应,由于API密钥不正确,返回的响应正文为非空。如果HTTP响应不成功,您应该从错误输入流中读取响应正文。例如:

// Get the response
InputStream is;
if (((HttpURLConnection) conn).getResponseCode() == 400)
    is = ((HttpURLConnection) conn).getErrorStream();
else
    is = conn.getInputStream();

BufferedReader rd = new BufferedReader(new InputStreamReader(is));

顺便说一下,您的示例是POST而不是GET,因为您发送的是请求正文中的参数,而不是URL。

您是否尝试过将可选的
类型
参数包含在
URL
中?另外,只是为了检查一下(因为一切看起来都是正确的),尝试不使用.json后缀,看看它是否能与XML响应一起工作。在wr.flush之后添加conn.connect()有什么作用吗?谢谢DV13-这帮了大忙。我确实发了一个帖子,所以谢谢你指出这一点。使用错误流,我发现我的密钥有问题,因此我将深入挖掘。再次感谢这段代码-它让我不用再多拉头发了!