我是MIT App Inventor的新手,能夠通過UI功能工作,但不太清楚如何從Web組件發出SOAP樣式的發佈請求。爲MIT App Inventor構建SOAP風格的發佈請求XML?
我能夠用Python 2.7版做到這一點,這裏是代碼:
#!/usr/bin/env python
# encoding: utf-8
import requests
## Remeber: Way too many people accessing this server error may occur if any other instance is opened
request = u"""<?xml version='1.0' encoding='utf-8'?>
<SOAP-ENV:Envelope xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://localhost/HTSI_Pages/HTSI_DataService" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<writeString xmlns="http://localhost/HTSI_Pages/HTSI_DataService">
<tagStr>MASTER.STATEMASTER</tagStr>
<entryStr>ReadyAllManagers</entryStr>
<typeStr>String</typeStr></writeString></SOAP-ENV:Body>
</SOAP-ENV:Envelope>"""
encoded_request = request.encode('utf-8')
headers = {"Host": "10.216.224.30",
"Content-Type": "text/xml; charset=UTF-8",
"Content-Length": len(encoded_request)}
response = requests.post(url="http://10.216.224.30/HTSI_Pages/HTSI_DataService.asmx",
headers = headers,
data = encoded_request,
verify=False)
print unicode(response.text)
有了一點谷歌搜索我能找到@Taifun's夢幻般的回答,顯示如果我要使它可能是我最好的工作打賭是在web.request標題下以列表的形式構建XML。
所以,我在這一點上不知道在何處以及如何我可以編碼爲UTF-8格式的請求,並設定主機/字符集等。(正如我所說的,小白@應用發明)
PS:因爲它是一臺響應這個請求的實際機器,所以我限制自己嘗試所有可能的選項組合以最終找出答案,儘管這是我通常的首要考慮(機器中的服務器位於嵌入式PLC ,不是由我寫的,所以我不知道它將如何對不同的組合作出反應。)
因此,任何幫助設計App Inventor中的此請求將不勝感激。
更新:我按照步驟到達了這個街區。 點擊按鈕我現在收到錯誤Error 1103: unable to post or put text
。隨後是uriencoded xml。
屏幕不夠大,看不到完整的錯誤,但一些使用Google提示這可能是由於防火牆/網絡。你有什麼建議?
更新2:所以我設置屏幕滾動,刪除\ N,字符集和分號,把開放的XML編碼的長度,並運行它反對PostText
以及PostTextWithEncoding
。
他們都沒有提出事件GotText
,我想因爲標籤文本沒有被設置,但我得到了某種彈出消息的錯誤。附圖。
我已經將相關塊@Taifun的原始問題添加了更新。感謝您關注此事。 – S4nd33p
好吧,在這些工作,並會回覆一下。另一件事......在構建XML時,是否應該使用\ n來格式化爲換行符,還是應該將其從我用作存儲庫的文本文件複製粘貼後的方式保留。注意:在文本文件中,我使用通常的新行格式化方式創建了xml內容。 – S4nd33p
嘗試了這些步驟,並更新了問題,但它仍然不存在,順便說一句,我不能感謝你在這個@Taifan上與我密切關注。 – S4nd33p