【问题标题】:The server returned an error: 404 not found服务器返回错误:404 not found
【发布时间】:2019-12-09 17:27:32
【问题描述】:

我正在尝试从这样的 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 并通过浏览器导航到它,它就可以工作。这样做时我得到以下 xml-result:

<result>
service/assets/asset/id/9301246/version/7/element/actual/0/storage/preview/file/09078960.jpg
</result>

那么为什么我的代码中确实存在 404 呢?任何想法?

【问题讨论】:

  • 你能不能在 try 的第一行加上一个断点,然后把 peNo 的值和你粘贴到浏览器的 url 贴出来。
  • @BarryO'Kane myapi.dev.io/xml/PE1234 是 url 字符串的结果。当我把它粘贴进去时,它就可以工作了。
  • 我无法访问该网址。你是在本地运行它还是什么/
  • @BarryO'Kane 它在本地。
  • 可能是第一行代码中构建的 url 不正确,或者您错误地传递了凭据。他们应该在饼干里吗?我通常看到这是通过基本身份验证完成的。

标签: c# asp.net-mvc http-status-code-404


【解决方案1】:

也许你应该为你的 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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 2018-04-17
    • 2016-09-02
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多