使用curl的Https请求,但使用HttpsURLConnection失败

我有一个卷曲请求,如下所示:-

curl -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"Request": {"Orders":[{"id_sales_order": 160407400833822,"address_billing": {"first_name":"John","last_name": "Doe","phone": "1234567","phone2": "1234","address1": "Sesamestreet 123","city": "Berlin","postcode": "12345","country": "Germany"}}]}}' "https://debraj:[email protected]/oms-api/?Action=UpdateOrderInformation&ServiceName=OMS&Signature=e436d6c7c930fa37a30a8b67051cb4531dad92b0c904a5a009bb4529a762dcd7&Timestamp=2016-04-09T19%3A14%3A12%2B0530&Version=1.0"

这给出了输出:

{"ErrorResponse":{"Head":{"RequestAction":"UpdateOrderInformation","ErrorType":"Sender","ErrorCode":0,"ErrorMessage":"Some elements were not processed"},"Body":{"UpdateOrderInformation":[{"ErrorCode":null,"ErrorMessage":"Order with source id: 160407400833822 was not found","Position":0}]}}}

为了用Java实现这一点,我有下面的Java代码。但是Java代码的行为不符合预期。可以让我知道我做错了什么吗?

public class CurlMain {

    public static void main(String[] args) throws Exception {
    String url = "https://example.com/oms-api/";
    URL obj = new URL(url);
    HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

    con.setRequestMethod("POST");
    String authStr = String.format("%s:%s", "debraj", "debrajmanna");
    String body = "{'Request': {'Orders':[{'id_sales_order': 160407400833822,'address_billing': {'first_name':'John','last_name': 'Doe','phone': '1234567','phone2': '1234','address1': 'Sesamestreet 123','city': 'Berlin','postcode': '12345','country': 'Germany'}}]}}";
    String encodedAuthStr = Base64.getEncoder().encodeToString(authStr.getBytes(StandardCharsets.UTF_8));
    con.setRequestProperty("Authorization", "Basic " + encodedAuthStr);
    con.setRequestProperty("Content-Type", "application/json");
    con.setRequestProperty("Accept", "application/json");

    String urlParameters = "Action=UpdateOrderInformation&ServiceName=OMS&Signature=e436d6c7c930fa37a30a8b67051cb4531dad92b0c904a5a009bb4529a762dcd7&Timestamp=2016-04-09T19%3A14%3A12%2B0530&Version=1.0";

    // Send post request
    con.setDoOutput(true);
    DataOutputStream wr = new DataOutputStream(con.getOutputStream());
    wr.writeBytes(urlParameters);
    wr.writeBytes(body);
    wr.flush();
    wr.close();

    int responseCode = con.getResponseCode();
    HttpsURLConnection.setFollowRedirects(true);
    Map<String, List<String>> headers = con.getHeaderFields();
    System.out.println(headers.toString());

    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();

    System.out.println("Curl Response " + response.toString());
    }

而Java代码正在打印:-

{"ErrorResponse":{"Head":{"RequestAction":"","ErrorType":"Sender","ErrorCode":"9","ErrorMessage":"E009: Access Denied"},"Body":""}}

我无权访问服务器代码或服务器配置。我的目标是通过Java代码发送相同的curl请求并获得相同的响应。

我正在使用Java 8。

我有什么想念的吗?

将查询参数附加到url可以解决以下问题:-

URL obj = new URL(new StringBuilder(url).append("?").append(urlParameters).toString());
...
//wr.writeBytes(urlParameters);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

强制cURL在代理上对HTTPs请求使用GET

来自分类Dev

使用curl登录https

来自分类Dev

使用curl放置请求

来自分类Dev

使用 curl 请求 mysql

来自分类Dev

使用截击的HTTPS请求

来自分类Dev

使用ClientResource的HTTPS请求

来自分类Dev

使用https URL时,HttpsURLConnection有效,但HttpClient无效

来自分类Dev

使用HTTPS和代理时,可以避免使用cURL发出CONNECT请求吗?

来自分类Dev

使用curl获取数据失败

来自分类Dev

使用CURL进行GET请求

来自分类Dev

使用curl模拟HTTP请求

来自分类Dev

使用 Curl PHP 的 Soap 请求

来自分类Dev

当通过命令行使用curl时,HAproxy不会将请求从http转发到https

来自分类Dev

使用inetc发送https请求

来自分类Dev

在Chrome扩展程序中使用PAC文件重定向HTTPS请求似乎失败

来自分类Dev

使用https协议但Ajax请求失败但http有效的可能原因

来自分类Dev

使用 AlamoFire 在 Swift 中通过证书固定实现的 HTTPS 请求失败

来自分类Dev

Post Request 与 curl 一起使用,但在 java 中使用 HttpsURLConnection 无效

来自分类Dev

使用cURL使用php保护Instagram请求

来自分类Dev

如何使用X509证书通过HttpsURLConnection进行POST请求?

来自分类Dev

如何使用HttpsUrlConnection代替DefaultHttpClient

来自分类Dev

CSRF验证失败。使用cURL时

来自分类Dev

CSRF验证失败。使用cURL时

来自分类Dev

gitlab使用PHP通过cURL提交失败

来自分类Dev

我如何获取cURL以使用https

来自分类Dev

在https上使用curl获取xml

来自分类Dev

我如何获得cURL以使用https

来自分类Dev

curl可以默认使用https吗?

来自分类Dev

使用 CURL 从 HTTPS 提交表单登录