0
従来のVBコードからWebAPI2 APIを呼び出そうとしています。VB.NETからWebAPI2を呼び出す方法
APIは、フィドラーまたはAngularJSクライアントから呼び出されたときに機能します。そして、VBのコードで
[Route("CreateMyObject")]
[HttpPost]
public async Task<JsonResult<MyObject>> CreateMyObject([FromUri] int parentId, [FromBody] MyObject object)
は:
Dim apiUri As New Uri(apiUrl & "api/CreateMyObject?parentId=" &
intParentId.ToString())
Dim data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(myObjectInstance))
Dim webRequest As WebRequest = WebRequest.Create(uri)
webRequest.ContentType = "application/json"
webRequest.Method = "POST"
webRequest.ContentLength = data.Length
Dim stream = webRequest.GetRequestStream()
stream.Write(data, 0, data.Length)
stream.Close()
Dim response = webRequest.GetResponse().GetResponseStream()
Dim reader As New StreamReader(response)
Dim res = reader.ReadToEnd()
reader.Close()
response.Close()
私は、APIから415レスポンスを得ることができます。他のコンテンツタイプも試しましたが、同じ結果やサーバーエラーがありました。
この呼び出しが間違っていても、Json本体のビットと関連しているようです。なぜなら、呼び出し本体で何も送信しなければ、parentIdは想定されているとおりにAPIに到達するからです。
'data' ...を定義しますが、' jsonDataBytes'はどこで初期化されますか? –
私はちょうど編集しました。 jsonDataBytesは、呼び出しが実際に行われるパラメータメソッドの名前です。私はコードを単純なバージョンに凝縮しました。 – JBourne
'webRequest.ContentLength = jsonDataBytes.Length' ...' jsonDataBytes.Length'はどこに設定されていますか? –