Опубликовать файл изображения в RESTful Web Service - PullRequest
1 голос
/ 14 сентября 2010

Я пытаюсь отправить файл изображения на веб-сервис.

вот мой код:

   ConnectionFactory connFact = new ConnectionFactory();
        ConnectionDescriptor connDesc;

        //String value = new String(data);
        String value= Base64OutputStream.encodeAsString(data, 0, data.length, false, false);

        value = "imgData=" + value;

        connDesc = connFact.getConnection("http://localhost:50806/Send");
        int iResponseCode = 0;
        HttpConnection httpConn = null;
        OutputStream os = null;
        if (connDesc != null)
        {

            try
            {
             byte[] theByteArray = value.getBytes();

                httpConn = (HttpConnection)connDesc.getConnection();

                httpConn.setRequestProperty("Content-Type", "image/jpeg");
                httpConn.setRequestMethod(HttpConnection.POST);
                httpConn.setRequestProperty("Content-Disposition", "form-data");
                httpConn.setRequestProperty("Connection", "Keep-Alive");
                httpConn.setRequestProperty("Content-Length", String.valueOf(data.length));

                //os = httpConn.openOutputStream();
                //os.write(theByteArray);
                DataOutputStream printout = new DataOutputStream (httpConn.openOutputStream()); 
                printout.write(theByteArray);
                iResponseCode = httpConn.getResponseCode();        
             } 
            catch(Exception e){
                e.printStackTrace();
            }
            finally{
                if(os != null)
                    os.close();

                if(httpConn != null){                    
                 httpConn.close();
                }
            }

        }
  return Integer.toString(iResponseCode);  

В метод передается байтовый массив, представляющий файл изображения.

подпись услуги:

   [AcceptVerbs(HttpVerbs.Post)]  
    public ActionResult Send(string imgData)
    {}

Есть идеи, как это отправить?

Большое спасибо, Dan

1 Ответ

1 голос
/ 14 сентября 2010

Строка в кодировке Base64, вероятно, будет слишком большой для передачи в качестве параметра URL в запросе GET. Либо устройство, либо какой-либо прокси по пути может сделать что-то плохое по запросу. Было бы гораздо безопаснее использовать запрос POST. Для этого установите запрос POST с помощью httpConn.setRequestMethod(HttpConnection.POST), а затем запишите все параметры формы в тело запроса, используя httpConn.openOutputStream() (и, возможно, PostData класс)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...