码迷,mamicode.com
首页 > Web开发 > 详细

System.Net.WebException : The remote server returned an error: (415) UNSUPPORTED MEDIA TYPE

时间:2014-08-08 20:56:16      阅读:1149      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   java   os   io   for   

I am having problems with a bit of code that accesses a restful web service. Running this code, it errors out at var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); and the exception returned is: "System.Net.WebException : The remote server returned an error: (415) UNSUPPORTED MEDIA TYPE."

      public bool CreateAccount(string myUsername, string url, string authtoken) {
        try {
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.MediaType="application/json";
            httpWebRequest.Accept="application/json";
            httpWebRequest.Method = "POST";

            WebHeaderCollection headers = new WebHeaderCollection();
            headers.Add("Authorization: Token"+authtoken);
            httpWebRequest.Headers = headers;

            using (StreamWriter streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) {
                streamWriter.Write("{username : ‘"+myUsername+"‘}");
            }

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); // Fails on this line.
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
                JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
                string json = streamReader.ReadToEnd();
            }
            return true;

        } catch (WebException e) {
            throw e;
            return false;
        }
        //return true;
    }

I have tried various things for the ContentType, MediaType, and Accept, but the working example given to me by the developer of the service supplies -H "Content-Type: application/json" to curl, so it would seem that "application/json" is the correct value. He also does --data-binary, which I assume streamWriter does for me.

Does anyone know what might be causing this error?

 

Figured it out.

When I do:

   WebHeaderCollection headers = new WebHeaderCollection();
   headers.Add("Authorization: Token "+authtoken);
   httpWebRequest.Headers = headers;

I accidentally blow away all of the existing headers that were created by doing:

        httpWebRequest.ContentType = "application/json";
        httpWebRequest.MediaType="application/json";
        httpWebRequest.Accept="application/json";
        httpWebRequest.Method = "POST";

The answer is to move the code where I create the header with the auth token above the code where I set the other headers.

 

来源

System.Net.WebException : The remote server returned an error: (415) UNSUPPORTED MEDIA TYPE,布布扣,bubuko.com

System.Net.WebException : The remote server returned an error: (415) UNSUPPORTED MEDIA TYPE

标签:style   blog   http   color   java   os   io   for   

原文地址:http://www.cnblogs.com/dupeng0811/p/the-remote-server-returned-an-error-415.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!