【问题标题】:asp.net HttpClient post to private APIasp.net HttpClient 发布到私有 API
【发布时间】:2018-06-15 14:02:06
【问题描述】:

我正在尝试使用 HttpClient 将 XML 发送到私有 API。服务器说他们期望:带有 xml 在名为“request”的变量中的 HTML Post。

我的代码:

XDocument document = new XDocument();
//Here I create the XML file

HttpClient client = new HttpClient();
// URL is the url for the private server
client.BaseAddress = new Uri(URL);
string request = document.ToString();
var httpConten = new StringContent(request, Encoding.UTF8, "application/xml");

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
var result = client.PostAsync("", httpConten).Result;

结果正在返回:

{StatusCode: 401, ReasonPhrase: 'Unauthorized', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Connection: keep-alive
  X-XSS-Protection: 1; mode=block
  X-Content-Type-Options: nosniff
  Referrer-Policy: same-origin
  Strict-Transport-Security: max-age=15768000; includeSubDomains
  Cache-Control: no-store
  Date: Thu, 14 Jun 2018 23:16:27 GMT
  Set-Cookie: SESSION=8dfda17c-a5c9-44c6-ae2b-d74847039f87; Path=/; Secure; HttpOnly
  Server: Apache-Coyote/1.1
  Content-Length: 469
}}

我是否正在使用名为 request 的 XML 变量发布 HTML 帖子?我联系了服务器,他们说他们没有收到我的请求。

谢谢

【问题讨论】:

  • 仔细检查 URL。如果它是致命的,那么告诉服务器是否需要任何类型的身份验证 - 基本、令牌等?
  • 他们在 XML 文件中进行身份验证。他们说问题是因为我没有在名为“request”的变量中提交 xml。我怎样才能确保我正在这样做?

标签: asp.net httpclient


【解决方案1】:

我是否正在使用名为 request 的 XML 变量发布 HTML 帖子?

要回答你的问题,你不是。您正在创建一个以 xml 为内容的请求。您定义的“请求”变量只是在您的本地环境中,根本不会出现在您的请求中。

xml 在名为“request”的变量中

但情况本身很奇怪。这可能意味着发送一个 json 对象,其中你有属性“request”,它等于一个 xml 字符串,然后他们自己解析这个东西。

【讨论】:

  • 我同意...这很奇怪。你有一个带有“请求”属性的 json 对象的例子吗?
  • 你对这个 api 有什么其他要求吗?
  • 不,这是唯一的要求
  • 公平地说,您说他们从 xml 进行身份验证。但是在您的示例中,xml 是空的,因此您正在获得未经授权的权限。除非这只是一个例子。
  • 只是一个例子。我构建 XML。他们说 XML 没问题,问题是名为“request”的变量。我不知道如何为我在 HTTP Post 中发送的内容设置名称
猜你喜欢
  • 2019-05-10
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多