2016-02-16 60 views
0

我需要在C#中使用web api更新CRM 2015中的記錄。但是當處理時,我得到了這個錯誤「方法不允許」狀態碼405.使用HttpRequestMessage在CRM 2015中更新記錄

下面是一些示例代碼。

HttpClient client = new HttpClient(new HttpClientHandler() { Credentials = new NetworkCredential("username", "password", "domain") }); 
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
client.DefaultRequestHeaders.Add(HttpRequestHeader.ContentType.ToString(), "application/json"); 

HttpRequestMessage retrieveReq = new HttpRequestMessage(HttpMethod.Post, serviceUrl + "SalesOrderSet(guid'" + orderId + "')"); 
retrieveReq.Headers.Accept.Clear(); 
retrieveReq.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
retrieveReq.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue("en-us")); 
retrieveReq.Headers.Add(HttpRequestHeader.ContentType.ToString(), "application/json"); 
retrieveReq.Headers.Add("Prefer", "odata.include-annotations=\"*\""); 
retrieveReq.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip")); 
retrieveReq.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate")); 
retrieveReq.Headers.Host = server_name; 
retrieveReq.Headers.Add(HttpRequestHeader.ContentLength.ToString(), "117"); 
retrieveReq.Headers.Connection.Add("Keep-Alive"); 
retrieveReq.Headers.Pragma.Add(new NameValueHeaderValue("no-cache")); 

var postData = new List<KeyValuePair<string, string>>(); 
postData.Add(new KeyValuePair<string, string>("name", "value")); 
HttpContent content = new FormUrlEncodedContent(postData); 
retrieveReq.Content = content; 

await client.SendAsync(retrieveReq).ContinueWith(
        (postTask) => 
        { 
         postTask.Result.EnsureSuccessStatusCode(); 
        }); 

任何幫助? 在此先感謝

回答

0

錯誤405通常意味着您嘗試發送一個方法不同於服務器的預期(通常是HttpVerb是錯誤的)。你正在使用POST,所以你可以嘗試使用GET? HttpMessage.Get。

編輯:看起來像更新操作需要PATCH動詞。其他人將需要一個PUT,並且刪除必須使用DELETE。

https://msdn.microsoft.com/en-us/library/mt607664.aspx

+0

是的,我試過Get方法,它的工作。問題在於POST方法,我需要使用api更新CRM。 – ABA

+0

405意味着HttpVerb是錯誤的。剛編輯原始答案:) – Jordi

+0

@ABA它工作? – Jordi