我想访问googlePlaces API并且我有网址,但我不知道如何执行API并获得json结果任何人都可以帮我解决这些问题?为我提供一个简单的方法,我可以执行API
这是我的代码:
package com.astro.famouspandit.Activities.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.astro.famouspandit.R;
import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.common.GooglePlayServicesRepairableException;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.location.places.Place;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Location extends AppCompatActivity {
private EditText mEdttxtCity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location);
final String API_KEY = "AgAjkAkAk-hsdwdweohdohwedhooooo";
mEdttxtCity = (EditText)findViewById(R.id.edttxtCity);
mEdttxtCity.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String Edttxtcity = mEdttxtCity.getText().toString();
if (Edttxtcity.length() >3) {
String url = " https://maps.googleapis.com/maps/api/place/autocomplete/json?input=ban&key=" + API_KEY;
Log.d("data", "onTextChanged: " + url);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
}
答案 0 :(得分:1)
onTextChange中的代码 -
input = s.toString();
SearchPlacesTask searchplacesTask = new SearchPlacesTask();
searchplacesTask.execute();
搜索地点的代码
private class SearchPlacesTask extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
System.out.println("SearchPlacesTask Called");
}
@Override
protected String doInBackground(String... place) {
// For storing data from web service
String data = "";
// Obtain browser key from https://code.google.com/apis/console
String key = "key=YOUR_API_KEY";
try {
input = "input=" + URLEncoder.encode(input, "utf-8");
System.out.println("input String : " + input);
} catch (Exception e1) {
e1.printStackTrace();
}
// place type to be searched
String types = "types=geocode";
// Sensor enabled
String sensor = "language=en";
/*// Building the parameters to the web service
String parameters = input + "&" + types + "&" + sensor + "&" + key;*/
// Building the parameters to the web service
String parameters = input + "&" + sensor + "&" + key;
// Output format
String output = "json";
// Building the url to the web service
String url = "https://maps.googleapis.com/maps/api/place/autocomplete/"
+ output + "?" + parameters;
System.out.println("Final URL Google API : " + url);
// String url = "https://maps.googleapis.com/maps/api/place/autocomplete/location=13.758662,100.496443" + output + "?" + parameters;
try {
// Fetching the data from we service
data = downloadUrlsearch(url);
} catch (Exception e) {
Log.d("Background Task", e.toString());
}
return data;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//YOUR JSON DATA HERE.
//NOW YOU CAN PARSE.
}
}
从网址下载数据的代码 -
/** AUTO SEARCH CODE */
/**
* A method to download json data from url
*/
private String downloadUrlsearch(String strUrl) throws IOException {
String data = "";
InputStream iStream = null;
HttpURLConnection urlConnection = null;
try {
URL url = new URL(strUrl);
// Creating an http connection to communicate with url
urlConnection = (HttpURLConnection) url.openConnection();
// Connecting to url
urlConnection.connect();
// Reading data from url
iStream = urlConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(iStream));
StringBuffer sb = new StringBuffer();
String line = "";
while ((line = br.readLine()) != null) {
sb.append(line);
}
data = sb.toString();
System.out.println("data: " + data);
br.close();
} catch (Exception e) {
e.printStackTrace();
// Log.d("Exception while downloading url", e.toString());
} finally {
iStream.close();
urlConnection.disconnect();
}
return data;
}
答案 1 :(得分:0)
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_TO_QUERY,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
答案 2 :(得分:0)
Android Samples Using Google Places API
请参阅使用Google Places API的示例代码。推荐使用API的方法。