簡體   English   中英

System.Net.WebException:遠程服務器返回錯誤:(415)UNSUPPORTED MEDIA TYPE

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

我遇到了一些訪問restful web服務的代碼問題。 運行此代碼,它在var httpResponse =(HttpWebResponse)httpWebRequest.GetResponse(); 返回的異常是:“System.Net.WebException:遠程服務器返回錯誤:(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;
    }

我已經為ContentType,MediaType和Accept嘗試了各種各樣的東西,但是服務開發人員給我的工作示例提供了-H“Content-Type:application / json”來卷曲,所以看起來似乎是“application / json“是正確的值。 他也做了--data-binary,我認為streamWriter對我有用。

有誰知道可能導致此錯誤的原因是什么?

弄清楚了。

當我做:

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

我意外地吹走了通過執行以下創建的所有現有標頭:

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

答案是在我設置其他標頭的代碼上方移動我創建標頭的代碼,其中包含auth標記。

此錯誤的一個已知原因是服務文件和配置文件中的服務名稱不匹配。 那是您的服務名稱和配置服務名稱不匹配“

右鍵單擊解決方案資源管理器中的.svc文件,然后選擇“查看標記”並將正確的服務名稱粘貼到.config中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM