0
WEB API 서비스에 액세스하기위한 Java 루틴을 만들었지 만 ASP.Net에 해당하는 VB로 인해 어려움을 겪고 있습니다. API 응답을 얻을 수 있지만 json 요소로 변환하는 방법을 모르겠습니다.vb.net에서 HttpClient를 사용하여 JSON 응답을 읽는 방법
Java 버전은 다음과 같습니다
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<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(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;
}
하지만 내 VB 버전
이 -이 내가 가진 전부입니다. json 객체를 가져올 수 있도록 어떻게 읽을 수 있습니까?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&username=" & mAccessUserName & "&password=" & 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 & TOKEN_ACCESS_URL), content).Result
If response.IsSuccessStatusCode Then
Return True
Else
Return False
End If
End Function
감사합니다.