Я пытаюсь вызвать WebAPI2 api из старого кода VB.Как вызвать WebAPI2 из VB.NET
API работает при вызове от скрипача или от клиента AngularJS.
[Route("CreateMyObject")]
[HttpPost]
public async Task<JsonResult<MyObject>> CreateMyObject([FromUri] int parentId, [FromBody] MyObject object)
Затем в коде VB:
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()
я могу получить только 415 ответа от API. Я также пробовал другие типы контента, но с тем же результатом или ошибкой сервера.
Что-то не так в этом вызове, похоже, связано с битом тела Json, потому что, если я не посылаю ничего в теле вызова, parentId получает API, как предполагается.
Вы определяете 'data' ... но где инициализируется' jsonDataBytes'? –
Я только что отредактировал. jsonDataBytes - это имя метода параметра, в котором фактически выполняется вызов. Я сконструировал код в более простой версии. – JBourne
У вас есть 'webRequest.ContentLength = jsonDataBytes.Length' ... где установлена' jsonDataBytes.Length'? –