Перестали работать static maps api. Активно использовал их в свое j2me-программе, а теперь отвалились.
Посмотрел логи ответов с сервера, оказалось что стал присылать 400 и 401 ошибки, 200 выдает где то в 10%. Регистрация нового ключа проблему не решила. С другими ресурсами работает код корректно.
public static byte[] get(String url) {
try {
String host = "";
int mark = url.indexOf('/', "http://".length() + 2);
if (mark != -1) {
host = url.substring("http://".length(), mark);
}
HttpConnection hc = (HttpConnection) Connector.open(url);
hc.setRequestMethod(HttpConnection.GET);
if (!host.equals("")) {
System.out.println(host);
hc.setRequestProperty("Host", host);
hc.setRequestProperty("Referer", host);
}
hc.setRequestProperty("User-Agent", "Opera/9.80");
hc.setRequestProperty("Proxy-Connection", "close");
hc.setRequestProperty("Connection", "Keep-Alive");
hc.setRequestProperty("Accept-Language", "ru-ru,ru;");
int resp = hc.getResponseCode(
byte[] buff = null;
System.out.println("__url " + url);
System.out.println("__resp " + resp);
if (resp == 302 || resp == 301) {
String loc = hc.getHeaderField("Location");
if (loc.startsWith("/")) {
loc = url.substring(0, url.lastIndexOf('/') + 1) + loc;
}
hc.close(
hc = (HttpConnection) Connector.open(loc);
hc.setRequestMethod(HttpConnection.GET);
if (!host.equals("")) {
System.out.println(host);
hc.setRequestProperty("Host", host);
hc.setRequestProperty("Referer", host);
}
hc.setRequestProperty("User-Agent", "Opera/9.80");
hc.setRequestProperty("Accept", "*/*");
hc.setRequestProperty("Proxy-Connection", "close");
hc.setRequestProperty("Connection", "Keep-Alive");
hc.setRequestProperty("Accept-Language", "ru-ru,ru;");
resp = hc.getResponseCode(
}
if (resp == 200) {
InputStream in = hc.openInputStream(
ByteArrayOutputStream bout = new ByteArrayOutputStream(
int b = 1;
while ((b = in.read()) >= 0) {
bout.write(b);
}
in.close(
bout.flush(
System.out.println("__size " + bout.size()
buff = bout.toByteArray(
traffic =traffic + buff.length;
}
hc.close(
return buff;
} catch (Exception e) {
System.out.println("__get file " + e.toString()
}
return null;
}
урл генерирую так
url = "http://static-maps.yandex.ru/1.x/?ll=" + lon + "," + lat + "&size=" + width + "," + height + "&z=" + zoom + "&l=" + type;
url = url + "&key=" + ykeys[Math.abs(Location.r
ответы с консоли НетБинса
static-maps.yandex.ru //хост
__url http://static-maps.yandex
__resp 400 //ответ с сервера
49.06576862590741/33.410797119140625/17 //координаты и зум
[ERRR] [fileconnection] Error: javacall_fileconnection_is_directory(), cannot get file attributes //ошибка доступа к файловой системе эмулятора
[ERRR] [fileconnection] Error: javacall_fileconnection_dir_exists(), cannot access directory
static-maps.yandex.ru
__url http://static-maps.yandex
__resp 400
49.06576862590741/33.410797119140625/17
[ERRR] [fileconnection] Error: javacall_fileconnection_is_directory(), cannot get file attributes
[ERRR] [fileconnection] Error: javacall_fileconnection_dir_exists(), cannot access directory
static-maps.yandex.ru
__url http://static-maps.yandex
__resp 401
49.06576862590741/33.410797119140625/17
[ERRR] [fileconnection] Error: javacall_fileconnection_is_directory(), cannot get file attributes
[ERRR] [fileconnection] Error: javacall_fileconnection_dir_exists(), cannot access directory
static-maps.yandex.ru
__url http://static-maps.yandex
__resp 400
49.06576862590741/33.410797119140625/17
[ERRR] [fileconnection] Error: javacall_fileconnection_is_directory(), cannot get file attributes
[ERRR] [fileconnection] Error: javacall_fileconnection_dir_exists(), cannot access directory
у гугла всё ОК
maps.googleapis.com
__url http://maps.googleapis.co
__resp 200
__size 10986
root1/terrain_44976x77700.jpg
[ERRR] [fileconnection] Error: javacall_fileconnection_is_directory(), cannot get file attributes
[ERRR] [fileconnection] Error: javacall_fileconnection_dir_exists(), cannot access directory
Замечено что с браузера сгенерированые ссылки открывает без проблем