Logcat中的java错误
我想显示coordinates
用户在
编辑文本,我想使用api naver平台提供
我搜索了一下,知道也许我需要解析
doInBackground
。。对吗
<MainActivity.java>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnShowCoord = (Button)findViewById(R.id.btnShowCoordinates);
edtAddress = (EditText) findViewById(R.id.edtAddress);
txtCoord = (TextView) findViewById(R.id.txtCoordinates);
btnShowCoord.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new GetCoordinates().execute(edtAddress.getText().toString().replace(" ","+"));
}
});
}
private class GetCoordinates extends AsyncTask<String, Void, String>{
ProgressDialog dialog = new ProgressDialog(MainActivity.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.setMessage("Please wait....'");
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
@Override
protected String doInBackground(String... strings) {
String response;
try{
String address = strings[0];
HttpDataHandler http = new HttpDataHandler();
String url = String.format("https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode",address);
// String url = String.format("https://maps.googleapis.com/maps/api/geocode/json?address=%s",address);
response = http.getHTTPData(url);
return response;
}
catch (Exception ex)
{
}
return null;
}
@Override
protected void onPostExecute(String s) {
try{
if(dialog.isShowing())
dialog.dismiss();
JSONObject jsonObject = new JSONObject(s);
String lat = ((JSONArray)jsonObject.get("addresses")).getJSONObject(0).get("x").toString();
String lng = ((JSONArray)jsonObject.get("addresses")).getJSONObject(0).get("y").toString();
//String lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0).getJSONObject("geometry")
// .getJSONObject("location").get("lat").toString();
//String lng = ((JSONArray)jsonObject.get("results")).getJSONObject(0).getJSONObject("geometry")
// .getJSONObject("location").get("lng").toString();
txtCoord.setText(String.format("Coordinates : %s / %s", lat, lng));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
<HttpDataHandler.java>
public HttpDataHandler(){
}
public String getHTTPData(String requestURL)
{
URL url;
String response = "";
try{
String addr = URLEncoder.encode("분당구 불정로 6", "UTF-8"); //주소입력
String apiURL = "https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode?query=분당구 불정로 6" + addr; //json
//String apiURL = "https://openapi.naver.com/v1/map/geocode.xml?query=" + addr; // xml
url = new URL(requestURL );
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("X-NCP-APIGW-API-KEY-ID", CLIENT_ID);
conn.setRequestProperty("X-NCP-APIGW-API-KEY", CLIENT_SECRET);
conn.setReadTimeout (15000);
conn.setConnectTimeout(15000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type","application/x-www-fom-urlencoded");
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 (ProtocolException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
}
2019-08-21 22:47:23.604 29249-29249/com.example.hermes_hg_geocoding W/System.err: org.json.JSONException: End of input at character 0 of
2019-08-21 22:47:23.605 29249-29249/com.example.hermes_hg_geocoding W/System.err: at org.json.JSONTokener.syntaxError(JSONTokener.java:460)
2019-08-21 22:47:23.606 29249-29249/com.example.hermes_hg_geocoding W/System.err: at org.json.JSONTokener.nextValue(JSONTokener.java:101)
2019-08-21 22:47:23.606 29249-29249/com.example.hermes_hg_geocoding W/System.err: at org.json.JSONObject.<init>(JSONObject.java:164)
2019-08-21 22:47:23.606 29249-29249/com.example.hermes_hg_geocoding W/System.err: at org.json.JSONObject.<init>(JSONObject.java:181)
2019-08-21 22:47:23.606 29249-29249/com.example.hermes_hg_geocoding W/System.err: at com.example.hermes_hg_geocoding.MainActivity$GetCoordinates.onPostExecute(MainActivity.java:86)
2019-08-21 22:47:23.606 29249-29249/com.example.hermes_hg_geocoding W/System.err: at com.example.hermes_hg_geocoding.MainActivity$GetCoordinates.onPostExecute(MainActivity.java:49)
2019-08-21 22:47:23.606 29249-29249/com.example.hermes_hg_geocoding W/System.err: at 安卓.os.AsyncTask.finish(AsyncTask.java:755)
2019-08-21 22:47:23.606 29249-29249/com.example.hermes_hg_geocoding W/System.err: at 安卓.os.AsyncTask.access$900(AsyncTask.java:192)
2019-08-21 22:47:23.607 29249-29249/com.example.hermes_hg_geocoding W/System.err: at 安卓.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:772)
2019-08-21 22:47:23.607 29249-29249/com.example.hermes_hg_geocoding W/System.err: at 安卓.os.Handler.dispatchMessage(Handler.java:107)
2019-08-21 22:47:23.607 29249-29249/com.example.hermes_hg_geocoding W/System.err: at 安卓.os.Looper.loop(Looper.java:214)
2019-08-21 22:47:23.607 29249-29249/com.example.hermes_hg_geocoding W/System.err: at 安卓.app.ActivityThread.main(ActivityThread.java:7319)
2019-08-21 22:47:23.607 29249-29249/com.example.hermes_hg_geocoding W/System.err: at java.lang.reflect.Method.invoke(Native Method)
2019-08-21 22:47:23.607 29249-29249/com.example.hermes_hg_geocoding W/System.err: at com.安卓.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
2019-08-21 22:47:23.607 29249-29249/com.example.hermes_hg_geocoding W/System.err: at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:934)
2019-08-21 22:47:23.646 29249-30304/com.example.hermes_hg_geocoding D/EGL_emulation: eglMakeCurrent: 0xd551a120: ver 3 0 (tinfo 0xd550f740)
共 (0) 个答案