-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
SoIch bin nicht in der Lage Antwort zu bekommen, während es
sein sollteso kann ich Antwort bekommen Sie mir sagen, wo ich falsch mache.
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] –
wie Sie die Task ausführen können –
Gehen Sie wie folgt vor: response = GecodeFuncation.getLatLongByURL ("Ihre URL" + Parameter [0] + "& sensor = false"); Lassen Sie alles gleich bleiben. –