我正在為我的 Visual Basic .Net 應用程式實作與 API REST 的通信。當我嘗試將欄位添加version=1到Content-Type標題時出現問題。這是我用來執行此操作的代碼:
Public Function AddTercero(tercero As Tercero, connection As GestionaConnection) As Boolean
If connection Is Nothing Then
Throw New ArgumentNullException(NameOf(connection))
End If
If tercero Is Nothing Then
Throw New ArgumentNullException(NameOf(tercero))
End If
Dim request = New HttpRequestMessage()
request.RequestUri = New Uri(Convert.ToString(connection.RecursosDictionary("vnd.gestiona.thirds"), CultureInfo.CurrentCulture))
request.Method = HttpMethod.Post
request.Headers.Add("X-Gestiona-Access-Token", AccessToken)
request.Headers.Add("Accept", "application/json")
request.Content = New StringContent(JsonConvert.SerializeObject(tercero))
request.Content.Headers.ContentType = New MediaTypeHeaderValue("application/vnd.gestiona.third json; version=1")
Dim req = request.Content.ReadAsStringAsync
Dim response As HttpResponseMessage = connection.Connection.SendAsync(request).Result
request.Dispose()
Dim resultado = response.Content.ReadAsStringAsync()
Debug.WriteLine(resultado.Result.ToString)
If response.StatusCode = HttpStatusCode.Created Then
Return True
ElseIf response.StatusCode = HttpStatusCode.Unauthorized Then
Throw New InvalidOperationException("Error al a?adir tercero: no tiene autorización " & response.ReasonPhrase)
Else
Throw New InvalidOperationException("Error al a?adir tercero: " & response.StatusCode & " -> " & response.ReasonPhrase)
End If
End Function
錯誤訊息說:
System.InvalidOperationException: Error al a?adir tercero: 415 -> Unsupported Media Type
我從服務器得到的訊息是:
{
"code": 415,
"name": "Unsupported Media Type",
"description": "Content not supported: application/vnd.gestiona.third json",
"technical_details": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.16"
}
我已經與 API 的開發人員談過,他們說我必須在 Content-Type 標頭中包含版本欄位,這就是他們所說的:Content-Type with version: application/vnd.gestiona.third json; version=1
關于如何解決這個問題的任何想法?
感謝您閱讀
uj5u.com熱心網友回復:
我通過分別宣告application/vnd.gestiona.third json內容型別和version=1型別來解決它,如下所示:
request.Content.Headers.ContentType = New MediaTypeHeaderValue("application/vnd.gestiona.third json")
request.Content.Headers.ContentType.Parameters.Add(New NameValueHeaderValue("version", "1"))
而不是像我那樣做:
request.Content.Headers.ContentType = New MediaTypeHeaderValue("application/vnd.gestiona.third json; version=1")
這樣,它就像一個魅力。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/414225.html
標籤:
