如何将图像从移动Web应用程序(PhoneGap和JavaScript)上传到SOAP Web服务

时间:2012-03-07 10:50:34

标签: javascript jquery soap jquery-mobile cordova

如何将图像从移动Web应用程序发送到现有Web服务。我考虑使用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 个答案:

答案 0 :(得分:1)

您可以查看如何从javascript调用SOAP Web服务here。 和here用于base64编码文件

答案 1 :(得分:0)

可能不是您正在寻找的直接解决方案,但以下示例可能适合您。

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

此SOW线程还有从javascript调用webservice的备选列表。

Simplest SOAP example

答案 2 :(得分:0)

我放弃了尝试将图像直接从JavaScript上传到SOAP Web服务 - 它变得太过分了。

我通过开发网关来充当移动应用和Web服务之间的过滤器来解决问题。网关过滤掉图像上载请求,并提取PhoneGap FileTransfer对象发送的base64编码图像。然后它按照Web服务的预期将其转换为base64binary数组。

这种方式比尝试用JavaScript完成所有内容要灵活得多。