Как загрузить изображение из мобильного веб-приложения (PhoneGap & JavaScript) в веб-сервис SOAP - PullRequest
0 голосов
/ 07 марта 2012

Как вы отправляете изображения из мобильного веб-приложения в существующий веб-сервис. Я подумал об использовании объекта PhoneGap FileTransfer , но я не знаю, как обернуть вызов в SOAP-пакет.

Сервер, на который мне нужно загрузить изображение, ожидает, что изображение будет упаковано в SOAP-пакет. Из приведенного ниже описания службы видно, что сервер ожидает файл в base64Binary. Кто-нибудь делал что-то подобное раньше, или я первый (или последний) буйвол, который пересек реку (чтобы его съел крокодил):

POST /Service.asmx HTTP/1.1
Host: 127.0.0.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Header>
    <AuthHeader xmlns="http://localhost/">
      <LogonID>string</LogonID>
      <Password>string</Password>
    </AuthHeader>
  </soap12:Header>
  <soap12:Body>
    <uploadFile xmlns="http://localhost/">
      <FileDetails>
        <ReferenceNumber>string</ReferenceNumber>
        <FileName>string</FileName>
        <FileType>int</FileType>
        <FileContents>base64Binary</FileContents>
      </FileDetails>
    </uploadFile>
  </soap12:Body>
</soap12:Envelope>

Ответы [ 3 ]

1 голос
/ 07 марта 2012

Вы можете посмотреть здесь о том, как вызывать веб-сервисы SOAP из javascript. и здесь для файлов кодирования base64

0 голосов
/ 19 марта 2012

Я прекратил попытки загружать изображение непосредственно из JavaScript в веб-сервис SOAP - это становилось слишком большим взломом.

Я решил проблему, разработав шлюз, служащий фильтром между мобильным приложением и веб-службой. Шлюз отфильтровывает запросы на загрузку изображений и извлекает закодированное в base64 изображение, отправленное объектом PhoneGap FileTransfer. Затем он преобразует это в массив base64binary, как и ожидалось веб-службой.

Это гораздо более гибкий способ, чем пытаться делать все на JavaScript.

0 голосов
/ 07 марта 2012

Может не быть прямым решением, как вы ищете, но следующий пример может работать для вас.

http://www.javascriptbank.com/javascript/article/ajax/simple-ajax-file-uploader/preview/en/

Также этот поток SOW имеет список альтернатив для вызова веб-сервиса из javascript.

Простейший пример SOAP

...