c# - 错误捕获来自(第三方)Web服务的响应信息

标签 c# web-services error-handling

我有以下代码,该代码将XML提交给第三方Web服务,该错误在“req.GetResponse()”上错误地(此刻是有意的)错误,如下所述。

byte[] bytes = Encoding.ASCII.GetBytes(myXMLData);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(myWebsite);
using (Stream os = req.GetRequestStream())
{
    os.Write(bytes, 0, bytes.Length);
}
WebResponse response = req.GetResponse();
string responseStream = StringFromResponseStream(response);

来自GetResponse()的错误

引发异常:System.dll中的“System.New.WebExtension”
附加信息:远程服务器返回错误:(400)错误的请求


当我在Fiddler中跟踪此调用时,我可以看到该服务的响应还包含一个更有用的错误(以下; RAW View ),我正试图解决以下问题:
HTTP/1.1 400 Bad Request
Date: Thu, 16 Jun 2016 10:42:26 GMT
Cache-Control: private
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Type: text/plain; charset=UTF-8
Content-Length: 54
Caseprovider-Credentials: <snip>
Caseprovider-Credentialshash: <snip>
Caseprovider-Apiversion: 15
Connection: close

No supported action 'SomeName' available for 'SomeValue'

在变量上有一个“监视”似乎并没有显示我可以从哪里获得(可能是一些我忽略了的简单事物)

最佳答案

最终找到了解决方案; “结果”包含过程中的内容;还有更多工作要做,但这是我所需要的基础。

using (var httpClient = new HttpClient())
{
    httpClient.BaseAddress = new Uri(myWebSite);
    httpClient.DefaultRequestHeaders.Accept.Clear();
    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));

    StringContent stringContent = new StringContent(myXMLData);
    stringContent.Headers.ContentType = new MediaTypeHeaderValue("text/xml");
    HttpResponseMessage httpResponseMessage = httpClient.PostAsync(httpClient.BaseAddress, stringContent).Result;

    string result = httpResponseMessage.Content.ReadAsStringAsync().Result;
}

关于c# - 错误捕获来自(第三方)Web服务的响应信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37857565/

相关文章:

ios - 如何使用带委托(delegate)方法的 NSURLSession 连接到 Web 服务?

c# - 无法在Visual Studio C#上运行项目/文件

c# - 从 System.Collections.Generic.List c# 中选择 x 个元素

c# - SaveFileDialog 将文件夹保存在内存中

javascript - 需要 sharepoint Socialdataservice.asmx 的项目 URL 格式

java - WildFly9.0 - 添加Web服务访问

c# - SqlServerTypes.Utilities 由于其保护级别而无法访问

c# - "object sender, EventArgs e"事件处理程序签名只是一个约定吗?

php - 如何在codeigniter中创建自定义error_php文件?

r - 编译 PDF 时自定义错误消息