2016-04-04 1 views
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に到達するからです。

+0

'data' ...を定義しますが、' jsonDataBytes'はどこで初期化されますか? –

+0

私はちょうど編集しました。 jsonDataBytesは、呼び出しが実際に行われるパラメータメソッドの名前です。私はコードを単純なバージョンに凝縮しました。 – JBourne

+0

'webRequest.ContentLength = jsonDataBytes.Length' ...' jsonDataBytes.Length'はどこに設定されていますか? –

答えて

0

チェイスロッカーが述べたように、また、必ずそれは罰金であることを確認するためにJSONオブジェクトを検証

Dim jsonDataBytes As Bytes() 

としてjsonDataBytesを初期化することによって最初に試します。このリンクhttp://jsonlint.com/を使用するか、より良いサポートのためにFiddler を代わりに使用してください。

関連する問題