我有以下代码,该代码将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/