在.NET中如何发起带XML请求体的非标准GET请求?
.NET实现带XML请求体的非标准GET请求
- 在Python中可直接发起包含XML请求体的非标准GET请求,示例代码:
answer = requests.get(url=url, auth=auth_handler, data=request_data, ...)
- 也可通过Postman实现该请求(界面支持直接为GET请求配置XML格式的请求体)
但在.NET中使用HttpClient直接调用GetAsync方法无法实现这类请求:
var content = new StringContent(requestData, Encoding.UTF8, "application/xml"); // GetAsync方法没有传入请求体的参数 var answer = _Client.GetAsync(url /*missing data=requestData*/).Result; // 服务器不允许使用POST方法 var answer2 = _Client.PostAsync(url, content).Result;
参考方案后,通过构造HttpRequestMessage对象可成功实现,代码如下:
var handler = new WinHttpHandler(); handler.ServerCredentials = new NetworkCredential(userName, userPassword); var client = new HttpClient(handler); var content = new StringContent(requestData, Encoding.UTF8, "application/xml"); var request = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = new Uri(url), Content = content }; var answer = client.SendAsync(request).Result;
内容的提问来源于stack exchange,提问作者Vojtěch Dohnal
相关产品推荐
相关产品推荐

