我正在尝试使用Yandex地理编码接收地址的坐标。首先,我直接创建了一个查询,如此处https://tech.yandex.ru/maps/doc/geocoder/desc/concepts/input_params-docpage/所述
但是,它回应说uri不正确。我发现,这是因为uri包含俄语字母。我尝试使用URLEncoder修复它,但没有任何更改。将不胜感激任何形式的帮助。
import com.sun.deploy.net.URLEncoder;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
public class Main {
public static void main(String[] args) {
String address = "Санкт-Петербург";
try {
URLEncoder.encode(address, "UTF-8");
} catch (Exception e) {
System.out.print("BAD");
}
System.out.println(address);
HttpClient client = new HttpClient();
String request = "https://geocode-maps.yandex.ru/1.x/?geocode=" + address;
GetMethod method = new GetMethod(request);
String Lat="",Long="";
try {
client.executeMethod(method);
String s = method.getResponseBodyAsString();
System.out.print(s);
} catch (Exception e) {}
}
}
线程“主”中的异常java.lang.IllegalArgumentException:无效的uri'https://geocode-maps.yandex.ru/1.x/?geocode=Санкт-Петербург':无效的查询
最佳答案
您实际上并未对该字符串进行编码。
请试试
address = URLEncoder.encode(...