繁体   English   中英

服务器返回错误:找不到404

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM