新規投稿
フォローする

Visual BasicからRestApiのGETを利用

Visual Studio2019でVisual Basicを利用しています。

初心者なこともありqueryを送付できずに困っています。

下のサンプルを動かした所5行目のエラー

(System.InvalidOperationException: 'Misused header name. ...)

で止まってしまい、Content-Typeの設定ができていません。

同じようなことをされてる方がいましたら、どのように書かれてますか?

それともVisualBasicのGETではクエリ送付は難しいでしょうか。

 

  1. Dim responseString As String = ""
  2. Dim url As String = "https://**MYSPACE.cybozu.com/k/v1/records.json?app=17&id=5"
  3. Dim request As HttpRequestMessage = New HttpRequestMessage(HttpMethod.Get, url)
  4. request.Headers.Add("X-Cybozu-API-Token", "**MYTOKEN")
  5. request.Headers.Add("Content-Type", "application/json")
  6. Using client As New System.Net.Http.HttpClient()
  7. Using response As System.Net.Http.HttpResponseMessage = client.SendAsync(request).Result
  8. Dim responseBody As String = response.Content.ReadAsStringAsync().Result
  9. Debug.WriteLine("***********************************************")
  10. Debug.WriteLine(responseBody)
  11. responseString = responseBody
  12. End Using
  13. End Using
  14. Return responseString
  15. End Function
0

3件のコメント

Avatar
Kazuhiro Yoshida
Dim url As String = "https://**MYSPACE.cybozu.com/k/v1/records.json?app=17&id=5"

上記の、records が record とかですかね。

1
Avatar
yahiro

Kazuhiro Yoshidaさん、ありがとうございます。

id指定で1件だけ→record

queryで条件付け→records

のようで、とりあえず動かすことはできました。助かりました。

 

 

本題とは関係ないですが下記修正しながら進めています。

・下記のContent-Type指定はkintoneのAPIでは不要

  1. request.Headers.Add("Content-Type", "application/json")

・HttpClientではなくWebClientを利用

 NameValueCollectionを作ってWebClientのQueryStringに指定するとquery動いた

  1. Dim enc As Encoding = Encoding.UTF8
  2. Dim wc As WebClient = New WebClient()
  3. wc.Headers.Add("X-Cybozu-API-Token", "**MYTOKEN")
  4. Dim nvc As NameValueCollection = New NameValueCollection()
  5. nvc.Add("app", "17")
  6. nvc.Add("query", "PARAM1=""PRAM1_VALUE""")
1
Avatar
Kazuhiro Yoshida

>本題とは関係ないですが下記修正しながら進めています。

>HttpClientではなくWebClientを利用

なるほど、情報ありがとうございます。勉強になります。

0
サインインしてコメントを残してください。