JAVA中带有JSON字符串的HTTP POST请求

 上海千恩万燮 发布于 2023-02-08 15:11

我必须使用我已生成的JSON字符串发出http Post请求.我尝试了两种不同的方法:

1.HttpURLConnection
2.HttpClient

但我从他们两个得到了相同的"不需要的"结果.到目前为止,我的代码与HttpURLConnection是:

public static void SaveWorkflow() throws IOException {
    URL url = null;
    url = new URL(myURLgoeshere);
    HttpURLConnection urlConn = null;
    urlConn = (HttpURLConnection) url.openConnection();
    urlConn.setDoInput (true);
    urlConn.setDoOutput (true);
    urlConn.setRequestMethod("POST");
    urlConn.setRequestProperty("Content-Type", "application/json");
    urlConn.connect();

    DataOutputStream output = null;
    DataInputStream input = null;
    output = new DataOutputStream(urlConn.getOutputStream());

                /*Construct the POST data.*/
    String content = generatedJSONString;

    /* Send the request data.*/
    output.writeBytes(content);
    output.flush();
    output.close();

    /* Get response data.*/
    String response = null;
    input = new DataInputStream (urlConn.getInputStream());
    while (null != ((response = input.readLine()))) {
        System.out.println(response);
        input.close ();
    }
}

到目前为止我的HttpClient代码是:

public static void SaveWorkflow() {
    try {

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost postRequest = new HttpPost(myUrlgoeshere);
        StringEntity input = new StringEntity(generatedJSONString);
        input.setContentType("application/json;charset=UTF-8");
        postRequest.setEntity(input);
        input.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
        postRequest.setHeader("Accept", "application/json");
        postRequest.setEntity(input); 

        HttpResponse response = httpClient.execute(postRequest);

        BufferedReader br = new BufferedReader(
                        new InputStreamReader((response.getEntity().getContent())));

        String output;

        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }

        httpClient.getConnectionManager().shutdown();

    } catch (MalformedURLException e) {

        e.printStackTrace();

    } catch (IOException e) {

        e.printStackTrace();

    }
}

生成的JsonString是这样的:

{"description":"prova_Process","modelgroup":"","modified":"false"}

我得到的回应是:

{"response":false,"message":"Error in saving the model. A JSONObject text must begin with '{' at 1 [character 2 line 1]","ids":[]}

有什么好主意吗?

1 个回答
  • 最后我设法找到解决问题的方法......

    public static void SaveWorkFlow() throws IOException
        {
            CloseableHttpClient httpClient = HttpClients.createDefault();
            HttpPost post = new HttpPost(myURLgoesHERE);
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("task", "savemodel"));
            params.add(new BasicNameValuePair("code", generatedJSONString));
            CloseableHttpResponse response = null;
            Scanner in = null;
            try
            {
                post.setEntity(new UrlEncodedFormEntity(params));
                response = httpClient.execute(post);
                // System.out.println(response.getStatusLine());
                HttpEntity entity = response.getEntity();
                in = new Scanner(entity.getContent());
                while (in.hasNext())
                {
                    System.out.println(in.next());
    
                }
                EntityUtils.consume(entity);
            } finally
            {
                in.close();
                response.close();
            }
        }
    

    2023-02-08 15:13 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有