2016-03-06 87 views
0

我想从android的http获取请求获取响应,而不使用地图活动,只发送url请求以获取对字符串的响应。Http GET在android中的请求错误

的URL得到的响应: https://maps.googleapis.com/maps/api/distancematrix/json?origins=ashdod&destinations=yavne&key

,我试图代码:

HttpURLConnection urlConnection= null; 
    URL url = null; 
    String response = ""; 
    try { 
     url = new URL(urlString.toString()); 
     urlConnection=(HttpURLConnection)url.openConnection(); 
     urlConnection.setRequestMethod("GET"); 
     urlConnection.setDoOutput(true); 
     urlConnection.setDoInput(true); 
     urlConnection.connect(); 
     InputStream inStream = null; 
     inStream = urlConnection.getInputStream(); 
     BufferedReader bReader = new BufferedReader(new InputStreamReader(inStream)); 
     String temp = ""; 
     while((temp = bReader.readLine()) != null){ 
      //Parse data 
      response += temp; 
     } 
     bReader.close(); 
     inStream.close(); 
     urlConnection.disconnect(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    try { 
     JSONObject Jresponse = new JSONObject(response.toString()); 
     JSONArray rows = Jresponse.getJSONArray("rows"); 
     JSONObject rows_obj = (JSONObject) rows.get(0); 
     JSONArray elems = rows_obj.getJSONArray("elements"); 
     JSONObject elems_obj = (JSONObject) elems.get(0); 
     JSONObject dist = (JSONObject) elems_obj.get("distance"); 
     JSONObject dur = (JSONObject) elems_obj.get("duration"); 
     finalDistance = dist.getInt("value"); 
     finalDuration = dist.getInt("value"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

的问题是,当它到达连接,它是抛出异常。

P.S.这是我第一次与机器人,所以请与我友善。

+0

您可以添加异常堆栈跟踪 – bmavus

+0

和异常类 – maslan

回答

3

在做GET请求时,不需要输出。

只是删除这一行:

urlConnection.setDoOutput(true);

,或者你可以简单地改变urlConnection.setDoOutput(true)urlConnection.setDoOutput(false)

除此之外,你也应该改变这部分代码,以防止出现乱码代码:

BufferedReader bufferedReader = 
      new BufferedReader(new InputStreamReader(inStream, StandardCharsets.UTF_8));