zoukankan      html  css  js  c++  java
  • System.Net.WebException : The remote server returned an error: (415) UNSUPPORTED MEDIA TYPE

    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.

    来源

  • 相关阅读:
    生日小助手源码运行的步骤
    关于生日小助手跨平台兼容性的临时解决方案
    生日小助手V3.0——跨平台的农历生日提醒软件
    生日小助手V3.1——跨平台多语言的农历生日提醒软件
    有关生日小助手的内容,请浏览生日小助手官方网站……
    生日小助手的详细规划——本博文随时更新,持续有效
    生日小助手V2.0发布了——可以正式投入使用!
    前端开发入门的几本推荐书籍
    多想一想,JS中函数声明和函数表达式的区别
    table固定宽度大小
  • 原文地址:https://www.cnblogs.com/dupeng0811/p/the-remote-server-returned-an-error-415.html
Copyright © 2011-2022 走看看