【问题标题】:Java https works but C# doesn't for same requestJava https 有效,但 C# 不适用于相同的请求
【发布时间】:2014-04-13 05:18:27
【问题描述】:

我正在转换将https POST 请求发送到 Internet 上的第 3 方服务器的 JAVA 程序。

  1. Java 程序在我的 PC 上运行,它工作正常并连接到服务器。
  2. 然后我运行 C# 程序。但服务器返回 400 Bad Request 响应。
  3. 然后我用Fiddler,比较了JAVA和C#程序每次HTTP请求的内容,两者内容完全一致。
  4. 这里我无法使用http 进行测试,因为目标服务器只允许https

所以我猜这可能是 Visual Studio 的任何证书问题?有人对这种情况有想法吗?

代码

我已经在这个问题中发布了代码 Java vs C# HTTP request with JSON data

【问题讨论】:

  • 您是否在计算机上的受信任根目录中安装了证书?
  • 它可能对你的答案有所帮助,向我们展示了 Java 代码和 C# 代码。
  • @RadenkoZec:你的意思是 JAVA?或 C#
  • 证书错误应该返回 400 真的很奇怪...我不认为这是适当的返回码。生成的内容必须有所不同。请问代码?
  • @fge:Java 版本运行良好。问题出在 C# 版本中。我在这个问题中发布了代码stackoverflow.com/questions/22241191/…

标签: c# java https ssl-certificate


【解决方案1】:

如果问题发生在 Java 版本中,我会忽略证书作为原因。在 Java 中,证书问题会导致协议错误异常……而不是 HTTP 响应代码。同样,向 HTTPS 端口发送 HTTP 请求(反之亦然)不会给出 HTTP 响应。

因此,我怀疑请求或请求标头存在 >>is

我能想到的唯一其他选择是:

  • 服务器根据 IP 地址给出响应,或者取决于是否提供了客户端证书,或者其他什么,或者

  • 您实际上是在与不同的服务器或不同的代理通信。

【讨论】:

    【解决方案2】:

    尝试在 C# 中添加:

    httpWebRequest.ContentType = "application/x-www-form-urlencoded";
    

    【讨论】:

    • 运气不好。这是错误An unhandled exception of type 'System.Net.WebException' occurred in System.dll Additional information: The remote server returned an error: (415) Unsupported Media Type
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 2019-12-08
    相关资源
    最近更新 更多