【问题标题】:How to Post json data from java to php server?如何将 json 数据从 java 发布到 php 服务器?
【发布时间】:2019-05-22 12:13:24
【问题描述】:

使用 post 请求从 java 代码向服务器发送 json 数据。

我正在尝试使用 java 端的 HTTP-URL-connection 以 json 格式发送 id。

这是网址 http://xenzet.com/ds/getrec.php?

这是接收数据的格式。 {"id":null,"date":"22-Dec-18"}

我只需要这里的id从java端发送到服务器。

如果我收到 id = 5 那么 json 应该是 {"id":5,"date":"22-Dec-18"} 这是java代码

    try
            {
                 java.net.URL urlForPostRequest = new java.net.URL("http://xenzet.com/ds/getrec.php?");
                 System.out.println("Instantiated new URL: " + urlForPostRequest);
                 Map<String ,Object> params = new LinkedHashMap<>();
                 params.put("id", resultant);
                 String readLine = null;
                HttpURLConnection conection = (HttpURLConnection) urlForPostRequest.openConnection();
                conection.setDoOutput(true);
                conection.setRequestMethod("POST");

    //                    conection.setRequestProperty("User-Agent", "Mozilla/5.0");
                OutputStream os = conection.getOutputStream();
                OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");    
                osw.write("Just Some Text");
                osw.flush();
                osw.close();
                os.close();  //don't forget to close the OutputStream
                conection.connect();

               String result1;
              BufferedInputStream bis = new BufferedInputStream(conection.getInputStream());
              ByteArrayOutputStream buf = new ByteArrayOutputStream();
              int result2 = bis.read();
              while(result2 != -1) {
                  buf.write((byte) result2);
                  result2 = bis.read();
              }
              result1 = buf.toString();
              System.out.println(result1);
            }
            catch(Exception ex)
            {
                // TODO Auto-generated catch block
            ex.printStackTrace();
            }

获取文件不例外。

【问题讨论】:

  • 你能分享 exeption stacktrace 吗?
  • conection.setRequestProperty("User-Agent", "Mozilla/5.0");解决了异常,没有错误但也没有答案,因为 json 确实被发送了 id。
  • 你能给出一段代码,说明如何将单个变量 id 发送到 url
  • 你想在 URL 中发送 id 吗?您能否使用您在 cmets 中与我分享的详细信息编辑您的问题?
  • 这是来自 php $id, "date"=>date("d-M-y"))); ?> 我只想发布 id 作为响应,我会得到 json 响应

标签: java json eclipse post httpurlconnection


【解决方案1】:

您的 POST API 正在接受 FORM 数据,您需要在表单数据中发送 id

考虑跟随,

public class Xenzet {

    public static void main(String[] args) {
        try {
            URL urlForPostRequest = new URL("http://xenzet.com/ds/getrec.php");
            System.out.println("Instantiated new URL: " + urlForPostRequest);
            final long id = 12;
            HttpURLConnection conection = (HttpURLConnection) urlForPostRequest.openConnection();
            conection.setDoOutput(true);
            conection.setRequestMethod("POST");
            conection.setRequestProperty("User-Agent", "Mozilla/5.0");
            conection.getOutputStream().write(("id="+id).getBytes(StandardCharsets.UTF_8));
            conection.connect();

            BufferedInputStream bis = new BufferedInputStream(conection.getInputStream());
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            int resultBuffer = bis.read();
            while (resultBuffer != -1) {
                bos.write((byte) resultBuffer);
                resultBuffer = bis.read();
            }
            String result = bos.toString();
            System.out.println(result);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

输出:

Instantiated new URL: http://xenzet.com/ds/getrec.php
{"id":"12","date":"22-Dec-18"}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多