当前位置: 首页 > 知识库问答 >
问题:

java.io.ioException:服务器在上传JSON对象时为URL返回HTTP响应代码:500

柴衡
2023-03-14

这是服务器端的代码,请帮助我理解我哪里出错了。我上传了一个字节数组的图像作为JSON对象。转换字节数组并将其保存在磁盘上。

package com.file.up;

import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;

import javax.imageio.ImageIO;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.json.JSONObject;

@Path("/")

public class FileUp {

    @POST
    @Path("/crunchifyService")
    @Consumes(MediaType.APPLICATION_JSON)

    public Response crunchifyREST(JSONObject incomingData) {
        String s="Success!";
        try {

            String jsonString = incomingData.getString("image");
            byte[] a=jsonString.getBytes();

            InputStream input=new ByteArrayInputStream(a);
            BufferedImage b=ImageIO.read(input);
            ImageIO .write(b,"png",new File("C:\\Users\\Uma\\Desktop\\WEB_AND"));

            } catch (Exception e) {
            System.out.println("Error Parsing: - ");
        }
        System.out.println("Data Received: ");

        // return HTTP response 200 in case of success
        return Response.status(200).entity(s).build();
    }
}

这是我的客户端代码。

package com.file.up;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection; 
import java.util.Base64;

import javax.imageio.ImageIO;
import org.json.JSONObject;

public class FileClient {

public static void main(String[] args) throws IOException {
    BufferedImage image;
    image = ImageIO.read(new File("12.png"));
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write( image, "png", baos );
    baos.flush();
    byte[] imageInByte = baos.toByteArray();
    String base64String = Base64.getEncoder().encodeToString(imageInByte);
    baos.close();

        // Step2: Now pass JSON File Data to REST Service
        try {
            JSONObject jsonObject = new JSONObject("{\"image\":\"" + base64String + "\"}");
            System.out.println(jsonObject);
            URL url = new URL("http://<ip>:9999/FileUpload/api/crunchifyService");
            URLConnection connection = url.openConnection();
            connection.setDoOutput(true);
            connection.setRequestProperty("Content-Type", "application/json");
            connection.setConnectTimeout(5000);
            connection.setReadTimeout(5000);
            OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
           // out.write(jsonObject.toString());
            out.close();



           BufferedReader in = new BufferedReader(new InputStreamReader(
                   connection.getInputStream()));

           while (in.readLine() != null) {
            }
            System.out.println("\nREST Service Invoked Successfully..");
            in.close();
        } catch (Exception e) {
            System.out.println("\nError while calling REST Service");
            System.out.println(e);
            e.printStackTrace();
        }
}
}

堆栈跟踪是java.io.ioException:服务器返回的HTTP响应代码:500,用于在sun.net.www.protocol.HTTP.httpurlConnection.getInputStream0(httpurlConnection.java:1838)在sun.net.www.protocol.HTTP.httpurlConnection.getInputStream(httpurlConnection.java:1439)在com.file.up.fileclient.main(Fileclient.java:64)在

共有1个答案

金承嗣
2023-03-14

我在我的TomEE服务器中复制了您的类,从客户机中我没有得到请求的主体,您应该尝试使用jaxrs客户机

 类似资料:
  • 这个错误的原因是什么?当我直接从浏览器调用URL时,它的工作非常完美。

  • 问题内容: 我想从URL打开一个链接:“ http://www.kohls.com/search.jsp?search=jacket&submit- search=web-regular ”,有时我得到: java.io.IOException:服务器返回URL的HTTP响应代码:403。但是使用浏览器打开网址是可以的。以下是我的代码的一部分: 错误详情 线程“主”中的异常java.io.IOEx

  • 我想打开一个链接从网址:"http://www.kohls.com/search.jsp?search=jacket Java语言io。IOException:服务器返回URL的HTTP响应代码:403。但使用浏览器打开url也没关系。以下是我代码的一部分: 错误详细信息 线程“main”java中出现异常。io。IOException:服务器返回了URL的HTTP响应代码403:http://w

  • 问题内容: 我的代码中包含基于HTML的查询,并且从服务器收到505响应后,似乎会引起一种特定的查询。我与其他似乎也有类似问题的人一起查看了505响应。显然505代表HTTP版本不匹配,但是当我将相同的查询URL复制到任何浏览器(尝试过firefox,seamonkey和Opera)时,似乎没有问题。我读过的一篇文章建议浏览器可能会自动处理版本不匹配的问题。 我试图通过使用Opera附带的漂亮的开

  • java.io.ioException:服务器返回HTTP响应代码:406 for url:https://aa09616289afe6a25ea1f7f6fbf12073:shppa_f5fd47a653d49d886436578c54187@mfaisal1521.myshopify.com/admin/api/2020-04/products.json at sun.net.www.prot

  • 问题内容: 我正在用Java面对这个问题。我想从URL获取一些HTML信息。该代码已经运行了很长时间,但是突然,它停止了工作。 当我使用浏览器访问此URL时,它毫无问题地打开。 代码: 例外: 怎么了?主人阻止了我吗? 问题答案: HTTP状态代码500通常表示Web服务器代码已崩溃。您需要预先确定状态代码,如果有错误,请阅读。它可能即包含有关问题的信息。 如果主机阻止了您,您宁愿获得4nn状态码