[英]The remote server returned an error: (404) Not Found - HttpWebResponse
[英]The server returned an error: 404 not found
我正在尝试从这样的api获取xml数据:
try
{
var url = "http://myapi.dev.io/xml/" + peNo;
CookieContainer myContainer = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = new NetworkCredential("restuser", "rest2user");
request.CookieContainer = myContainer;
request.PreAuthenticate = true;
using (var response = request.GetResponse() as HttpWebResponse)
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
var data = new AssetXmlDTO() { AssetXml = reader.ReadToEnd() };
return data;
}
}
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.NotFound)
{
// handle the 404 here
return null;
}
}
但是每次我运行代码时,我都会得到一个404 ...
但是,如果我复制该URL并通过浏览器导航到该URL,它将起作用。 这样做时,我得到以下xml结果:
<result>
service/assets/asset/id/9301246/version/7/element/actual/0/storage/preview/file/09078960.jpg
</result>
那么,为什么当我的代码确实存在时却在我的代码中得到404? 任何想法?
可能是您应该向HttpWebRequest添加一些属性,例如:
request.Method = "POST";
string _yourPostData = peNo;
byte[] byteArray = Encoding.UTF8.GetBytes(_yourPostData );
request.ContentType = "application/xml";
request.ContentLength = byteArray.Length;
Stream _dataStream = request.GetRequestStream();
_dataStream.Write(byteArray, 0, byteArray.Length);
_dataStream.Close();
// Get the response.
WebResponse response = request.GetResponse();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.