Как мне получить изображение для загрузки? - PullRequest
0 голосов
/ 26 февраля 2011

Приведенные ниже коды отправляют запрос на сервер, а сервер отправляет ответ обратно. Затем клиент форматирует запрос и делает его URL-адресом, который он загружает в imageitem. Это прекрасно работает с помощью эмулятора, но, когда я развертываю его на своем мобе, он может извлечь строку с моего сервера, но при попытке загрузить изображение сообщает NegativeArrayException.

Примечание: 1. У меня уже есть сеть на моем мобе 2. Когда я использую статический URL, он работает нормально, то есть вместо передачи отформатированного URL я передаю статический URL.

Как получить изображение для загрузки?

 public void run() {
        try {
            sendMessage("Query,map,$,start,211,Arsenal,!");
            String unformattedurl = receiveMessage();

            String url = "http://maps.google.com/maps/api/staticmap?center=100,20&zoom=14&size=500x400&format=JPEG&maptype=roadmap&sensor=false";
           URL = getURL(unformattedurl);


                        stringItem.setText(URL);
                        Image image = loadImage(URL);
                        item.setImage(image);

        } catch (Exception ex) {
            stringItem.setText(stringItem.getText() + "Err2"+ex.getMessage());
        }

    }



 private String getURL1(String message){
     return "http://maps.google.com/maps/api/staticmap?center=Mauritius&zoom=10&size=200x200&maptype=roadmap&markers=color:Blue|label:U|22.0,22.0&markers=color:Green|label:B|21.0,21.0&sensor=false";
 }



    private String getURL(String message) throws Exception{

        String[] messagearr=client.split(message,",");

        String color,object;
        String url="http://maps.google.com/maps/api/staticmap?center=Mauritius&zoom=10&size="+200+"x"+200+"&maptype=roadmap";

        String lat,longitude;

        if (messagearr[0].equals("query")){

            if (messagearr[1].equals("Error")){
                String error=messagearr[2];

            }
            else {

                int startindex=5;
                String distance,time;
                distance=messagearr[2];
                time=messagearr[3];
                String name=messagearr[4];
                String imageLabel="The bus is at :"+time+"min and "+distance +"km from user";


                for (int i=startindex;i<messagearr.length;i+=2){
                     System.out.println("TEst8");
                     lat=messagearr[i];
                     longitude=messagearr[i+1];

                    if (i==startindex){
                        object="U";
                        color="Blue";
                    }

                    else{
                        object="B";
                        color="Green";
                    }


                     url=url+"&markers=color:"+color+"|label:"+object+"|"+lat+","+longitude;
                     item.setLabel(7+url);

                }
                url+="&sensor=false";


                return url;
            }
        }

        throw new Exception("Url is wrong");
    }

     private void sendMessage(String message) throws IOException{

            DataOutputStream dos = connection.openDataOutputStream();

            dos.writeUTF(message);

    }

 private String receiveMessage() throws IOException{
       //stringItem.setText(stringItem.getText()+5);
      DataInputStream dis = connection.openDataInputStream();
      //stringItem.setText(stringItem.getText()+6);
      return dis.readUTF();
  }
public Image loadImage(String url) throws IOException {
    HttpConnection hpc = null;
    DataInputStream dis = null;
    try {
      hpc = (HttpConnection) Connector.open(url);

      int length = (int) hpc.getLength();
      System.out.println("Length is "+length);
      byte[] data = new byte[length];
      dis = new DataInputStream(hpc.openInputStream());
      dis.readFully(data);
      return Image.createImage(data, 0, data.length);
    } finally {
      if (hpc != null)
        hpc.close();
      if (dis != null)
        dis.close();
    }
  }
}

Этот и мой другие вопросы одинаковы, за исключением того, что проблема определена более подробно. Я также сохранил URL-адрес в stringItem, и когда я вручную вошел в свой броузер, я загрузил изображение?

Другая вещь, когда я пытался hpc.getResponseMessage (), у меня было выброшено IOException ..

...