title: How to read a JSON response using HttpClient in vb.net
body: <p>I have built a java routine for accessing a WEB API service, however I am struggling with the VB equivalent for ASP.Net.  I get the API response, but I don't know how to convert it to the json elements.</p>
  
  <p>The java version is:</p>
  
  <pre><code>    public boolean canLogin(){
      HttpClient httpclient = new DefaultHttpClient();
      HttpPost httppost = new HttpPost(hostURL + TOKEN_ACCESS_URL);
      httppost.addHeader("Accept", "application/json");
  
      // Add the post content
      List&lt;NameValuePair&gt; nameValuePairs = new ArrayList&lt;NameValuePair&gt;(3);
      nameValuePairs.add(new BasicNameValuePair("grant_type", "password"));
      nameValuePairs.add(new BasicNameValuePair("username", accessUserName));
      nameValuePairs.add(new BasicNameValuePair("password", accessPassword));
      try {
          httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
      } catch (UnsupportedEncodingException e1) {
          mobileLogDataHandler.ToLog(LogType.Error, "UnsupportedEncodingException closing data stream with error: " + e1.getLocalizedMessage() + ",detail:" + e1.getMessage() + " in canLogin", mResolver, RemoteDataHandler.class);
          return false;
      }
  
      // post the server
      InputStream inputStream = null;
      String result = null;
      try {
          HttpResponse response = httpclient.execute(httppost);
          if (response.getStatusLine().getStatusCode()!=200){
              mobileLogDataHandler.ToLog(LogType.Error, "Failed to get server token with error: " + response.getStatusLine().toString() + " in canLogin", mResolver, this.getClass());
              return false;
          }
          HttpEntity entity = response.getEntity();
          inputStream = entity.getContent();
          BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);// json is UTF-8 by default
          StringBuilder sb = new StringBuilder();
          String line = null;
          while ((line = reader.readLine()) != null)
          {
              sb.append(line + "\n");
          }
          result = sb.toString();
          inputStream.close();
  
      } catch (ClientProtocolException e) {
          mobileLogDataHandler.ToLog(LogType.Error, "ClientProtocolException trying to get bearer token from server with error: " + e.getLocalizedMessage() + ",detail:" + e.getMessage() + " in canLogin", mResolver, this.getClass());
          return false;
      } catch (IOException e) {
          mobileLogDataHandler.ToLog(LogType.Error, "IOException trying to get bearer token from server with error: " + e.getLocalizedMessage() + ",detail:" + e.getMessage() + " in canLogin", mResolver, this.getClass());
          return false;
      }
  
      //read the response content
      try{
          JSONObject jObject = new JSONObject(result);
          bearerToken =  jObject.getString("access_token");
          String expiryIntervalInSeconds = jObject.getString("expires_in");
          return canSaveNewBearerToken(bearerToken, expiryIntervalInSeconds);
      } catch (JSONException e){
          mobileLogDataHandler.ToLog(LogType.Error, "JSON error reading data sent from server for bearer token request with error: " + e.getLocalizedMessage() + ",detail:" + e.getMessage() + " in canLogin", mResolver, this.getClass());
          return false;
      }
  </code></pre>
  
  <p>But in my VB version - this is all I have. How can I read it so that I get the json objects out of it:</p>
  
  <pre><code>Public Function canLogin() As Boolean
      Dim client As HttpClient = New HttpClient
      client.DefaultRequestHeaders.Accept.Add(
              New System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"))
  
      'Dim content As HttpContent = New StringContent("grant_type=password&amp;username=" &amp; mAccessUserName &amp; "&amp;password=" &amp; mAccessPassword)
      Dim urlEncodedList As New List(Of KeyValuePair(Of String, String))
      urlEncodedList.Add(New KeyValuePair(Of String, String)("grant_type", "password"))
      urlEncodedList.Add(New KeyValuePair(Of String, String)("username", mAccessUserName))
      urlEncodedList.Add(New KeyValuePair(Of String, String)("password", mAccessPassword))
      Dim content As New FormUrlEncodedContent(urlEncodedList)
      'content.Headers.ContentType = New Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded")  'not sure if i need this
  
      Dim response As HttpResponseMessage = client.PostAsync(New Uri(mHostURL &amp; TOKEN_ACCESS_URL), content).Result
  
      If response.IsSuccessStatusCode Then
          Return True
      Else
          Return False
      End If
  
  
  End Function
  </code></pre>
  
  <p>Any help appreciated.</p>