HttpRequestMessage - 解码 'parameter' - c# net40
HttpRequestMessage - Decoding 'parameter' - c# net40
我正在通过 PUT 请求与第三方集成 API(必需)。但是 URL 不是我认为的标准。
请注意,预订号不在正文中,也不作为参数,它只是一个 / 然后是数字。
他们已经对预订号码进行了编码(通过另一个 API 电话请求)。问题是我正在使用 HttpRequestMessage,这会将 %2F 解码为 /。意味着它失败了。我已经尝试对特殊字符进行双重编码,但这并没有返回一致的响应,有时它会在其他时候失败(使用不同的预订号,只有 %2F 是双重编码)。有没有办法停止 HttpRequestMessage 解码部分 URL?
我试过 encoding/decoding 但它总是在这里被剥离(除非双重编码:
var path = "https://standard.com/services/U2FsdGVkX18qfVhkTn7JsiXWA8q4vco7vpU%2BmeKqiXKafdKxfJqsq1ELGFOHIilpoR7VXqUcg89yXiabxjjfVXiRmVqGOffsKw%2BKLp5OU6%2FJZaTyn6BYxi%2F10ndtWFLG2KgxRmm%2BxtgTAopUi6m7wWTnSoAlL8qoS%2F3UbiippOw%3D";
var requestMessage = new HttpRequestMessage(HttpMethod.PUT, path);
var requestMessage = (HttpWebRequest)WebRequest.Create(path);
var requestMessage = new HttpRequestMessage(method, new Uri(path));
更新: 这是 Microsoft 做出的设计决定:
从他们的角度来看,解决方案是在
web.config。但这是一个 class 库,因此被更多人使用
比一个项目。我不想改变它,除非我真的必须
我正在通过 PUT 请求与第三方集成 API(必需)。但是 URL 不是我认为的标准。
请注意,预订号不在正文中,也不作为参数,它只是一个 / 然后是数字。
他们已经对预订号码进行了编码(通过另一个 API 电话请求)。问题是我正在使用 HttpRequestMessage,这会将 %2F 解码为 /。意味着它失败了。我已经尝试对特殊字符进行双重编码,但这并没有返回一致的响应,有时它会在其他时候失败(使用不同的预订号,只有 %2F 是双重编码)。有没有办法停止 HttpRequestMessage 解码部分 URL?
我试过 encoding/decoding 但它总是在这里被剥离(除非双重编码:
var path = "https://standard.com/services/U2FsdGVkX18qfVhkTn7JsiXWA8q4vco7vpU%2BmeKqiXKafdKxfJqsq1ELGFOHIilpoR7VXqUcg89yXiabxjjfVXiRmVqGOffsKw%2BKLp5OU6%2FJZaTyn6BYxi%2F10ndtWFLG2KgxRmm%2BxtgTAopUi6m7wWTnSoAlL8qoS%2F3UbiippOw%3D";
var requestMessage = new HttpRequestMessage(HttpMethod.PUT, path);
var requestMessage = (HttpWebRequest)WebRequest.Create(path);
var requestMessage = new HttpRequestMessage(method, new Uri(path));
更新: 这是 Microsoft 做出的设计决定:
从他们的角度来看,解决方案是在 web.config。但这是一个 class 库,因此被更多人使用 比一个项目。我不想改变它,除非我真的必须