Клуб API Карт

проблемы с static maps api

skomlach
29 апреля 2012, 15:36

Перестали работать 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.random.nextInt()%ykeys.length)];

 

ответы с консоли НетБинса

static-maps.yandex.ru   //хост
__url http://static-maps.yandex.ru/1.x/?ll=33.410797119140625,49.06576862590741&size=512,512&z=17&l=map,skl,trf&key=ключ //урл
__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.ru/1.x/?ll=33.410797119140625,49.06576862590741&size=512,512&z=17&l=map,pskl&key=ключ
__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.ru/1.x/?ll=33.410797119140625,49.06576862590741&size=512,512&z=17&l=map,skl&key=ключ
__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.ru/1.x/?ll=33.410797119140625,49.06576862590741&size=512,512&z=17&l=map&key=ключ
__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.com/maps/api/staticmap?&maptype=terrain&zoom=17&size=512x512&sensor=false&center=49.06576862590741,33.410797119140625
__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

 

  

Замечено что с браузера сгенерированые ссылки открывает без проблем

1 комментарий
Подписаться на комментарии к посту

На будущее - размещайте ваш код с помощью врезок, не все хотят видеть в своей ленте простыню кода на 2 экрана.

 

Пример кода мало что может сказать, нужны http-заголовки которые отправляет ваше приложение при запросе

и заголовки ответа Яндекса