我正在开发一个依赖网络来获取一些位置信息的应用程序。一切工作正常,除了有时互联网很慢,并且 Geocoder 类在发送结果之前超时。
Geocoder geocoder = new Geocoder(mContext, Locale.getDefault());
Run Code Online (Sandbox Code Playgroud)
我尝试研究地理编码器的方法,但没有超时。我怎样才能解决这个问题?
addresses = geocoder.getFromLocation(lat, lon, 1);在asynctask的doInBackground()内部。
谢谢。
当我尝试不带空格的URL时,它可以完美工作。但是,当我添加一个空格时,它给了我以下错误:
造成原因:java.lang.IllegalArgumentException:索引79路径中的非法字符:http: //api.wunderground.com/api/81eb946ab954bdcb/hourly/lang/q/Canada/Bachelors Island Marine.json
当我在浏览器中尝试过时,它可以工作。
PS:我尝试对URL进行编码,并且发生了相同的错误。
码:
package com.example.elie.myapplication;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
/**
* Async task class to get json by making HTTP call
* */
public class GetWeatherInfo extends AsyncTask<Void, Void, Void> {
private String mCity;
private OnTaskComplete onTaskComplete;
private ProgressDialog pDialog;
// URL to get Country
private static String url ;
// JSON Node names
private static final String TAG_FORECAST="hourly_forecast"; …Run Code Online (Sandbox Code Playgroud)