2016-03-22 4 views
-1
public class GecodeFuncation { 

public static String getLatLongByURL(String requestURL) { 
    URL url; 
    String response = ""; 
    try { 
     url = new URL(requestURL); 

     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setReadTimeout(15000); 
     conn.setConnectTimeout(15000); 
     conn.setRequestMethod("GET"); 
     conn.setDoInput(true); 
     conn.setRequestProperty("Content-Type", 
       "application/x-www-form-urlencoded"); 
     conn.setDoOutput(true); 
     int responseCode = conn.getResponseCode(); 

     if (responseCode == HttpsURLConnection.HTTP_OK) { 
      String line; 
      BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
      while ((line = br.readLine()) != null) { 
       response += line; 
      } 
     } else { 
      response = ""; 
     } 

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

ich AsyncTask auf diese Weise bin Executing:Wert Pass in AsyncTask ist in Objektformat in android

new GeocodeImplementation().execute("D-109 3rd floor ShakarPur Laxmi Nagar New Delhi 110092".replace(" ","%20")); 

unten ist mein AsyncTask:

class GeocodeImplementation extends AsyncTask<String, Void, String[]> { 
     ProgressDialog dialog = new ProgressDialog(DataEntry.this); 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      dialog.setMessage("Please wait..."); 
      dialog.setCanceledOnTouchOutside(false); 
      dialog.show(); 
     } 

     @Override 
     protected String[] doInBackground(String... params) { 
      String response; 
      try { 
       response = GecodeFuncation.getLatLongByURL("http://maps.google.com/maps/api/geocode/json?address="+params+"&sensor=false"); 
       Log.d("response",""+response); 
       return new String[]{response}; 
      } catch (Exception e) { 
       return new String[]{"error"}; 
      } 
     } 

     @Override 
     protected void onPostExecute(String... result) { 
      try { 
       JSONObject jsonObject = new JSONObject(result[0]); 

       double lng = ((JSONArray)jsonObject.get("results")).getJSONObject(0) 
         .getJSONObject("geometry").getJSONObject("location") 
         .getDouble("lng"); 

       double lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0) 
         .getJSONObject("geometry").getJSONObject("location") 
         .getDouble("lat"); 

       Log.d("latitude", "" + lat); 
       Log.d("longitude", "" + lng); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      if (dialog.isShowing()) { 
       dialog.dismiss(); 
      } 
     } 
    } 

Wenn ich Adresse AsyncTask passieren dann seine URL wird:

http://maps.google.com/maps/api/geocode/json?address=[Ljava.lang.String;@41fff330&sensor=false

So

Ich bin nicht in der Lage Antwort zu bekommen, während es

sein sollte

http://maps.google.com/maps/api/geocode/json?address=D-109%203rd%20floor%20ShakarPur%20Laxmi%20Nagar%20New%20Delhi%20110092&sensor=false

so kann ich Antwort bekommen Sie mir sagen, wo ich falsch mache.

+0

params ist ein String ..., was bedeutet, dass ein varargs ist (ein Array von Strings), kein String, so dass Sie Um auf Ihre URL zuzugreifen, die in der ersten Position gespeichert ist, verwenden Sie params [0] –

+0

wie Sie die Task ausführen können –

+0

Gehen Sie wie folgt vor: response = GecodeFuncation.getLatLongByURL ("Ihre URL" + Parameter [0] + "& sensor = false"); Lassen Sie alles gleich bleiben. –

Antwort

0

Aufgabe wie dieselbe ausgeführt werden:

response =

GecodeFuncation.getLatLongByURL("http://maps.google.com/maps/api/geocode/json?address="+params[0]+"&sensor=false"); 
Verwandte Themen