Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java HttpsUrlConnection中发布URL参数和XML负载_Java_Post_Soap_Httpurlconnection_Httpsurlconnection - Fatal编程技术网

在Java HttpsUrlConnection中发布URL参数和XML负载

在Java HttpsUrlConnection中发布URL参数和XML负载,java,post,soap,httpurlconnection,httpsurlconnection,Java,Post,Soap,Httpurlconnection,Httpsurlconnection,我做了一些研究,有很多地方说如何使用HttpsURLConnection在Java中发布URL参数,还有许多源代码指定如何将SOAP XML有效负载作为POST请求的主体发布。但是在POST请求中没有地方说明如何同时做到这两个方面。我试图编写一个post参数请求和一个XML正文,但不知道如何正确格式化请求 public String apiCall(String xmlData) { String dataBack = ""; String base64log

我做了一些研究,有很多地方说如何使用HttpsURLConnection在Java中发布URL参数,还有许多源代码指定如何将SOAP XML有效负载作为POST请求的主体发布。但是在POST请求中没有地方说明如何同时做到这两个方面。我试图编写一个post参数请求和一个XML正文,但不知道如何正确格式化请求

public String apiCall(String xmlData) {
    String dataBack = "";
    String base64login = "";
    String login = "user:password";
    base64login = new String(Base64.encodeBase64(login.getBytes()));
    String tServer = "https://yourwebsite/pageToPostDataTo";
    String urlParams = "firstAction=DoThis&secondAction=doThat";
    byte[] postData = urlParams.getBytes(StandardCharsets.UTF_8);
    URL url = new URL(tServer);
    HttpsURLConnection con = (HttpsUrlConnection) url.openConnection();
    con.setDoInput(true);
    con.setDoOutput(true);
    con.setRequestMethod("POST");
    con.setRequestProperty("Accept", "application/xml");
    con.setRequestProperty("Authentication", "Basic " + base64login);
    con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    con.getOutputStream().write(postData);
    con.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");
    try (OutputStream os = con.getOutputStream()) {
        byte[] input = xmlData.getBytes("utf-8");
        os.write(input);
    }
    InputStream inStream = con.getInputStream();
    byte[] res = new byte[2048];
    int i = 0;
    StringBuilder response = new StringBuilder();
    while ((i = inStream.read(res)) != -1) {
        res.append(new String(res, 0, 1));
    }
    inStream.close();
    dataBack += response;
}
但是,这会导致SOAP请求以“prolog中不允许的内容”响应