如何将图像从移动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>
答案 0 :(得分:1)
答案 1 :(得分:0)
可能不是您正在寻找的直接解决方案,但以下示例可能适合您。
http://www.javascriptbank.com/javascript/article/ajax/simple-ajax-file-uploader/preview/en/
此SOW线程还有从javascript调用webservice的备选列表。
答案 2 :(得分:0)
我放弃了尝试将图像直接从JavaScript上传到SOAP Web服务 - 它变得太过分了。
我通过开发网关来充当移动应用和Web服务之间的过滤器来解决问题。网关过滤掉图像上载请求,并提取PhoneGap FileTransfer对象发送的base64编码图像。然后它按照Web服务的预期将其转换为base64binary数组。
这种方式比尝试用JavaScript完成所有内容要灵活得多。