KSoap2 Android无效的SOAP(KSoap2 Android not valid SOAP)
我正在尝试使用Android与KSOAP2一起发布到我自己的测试肥皂服务器(C#)。
现在我有来自SOAP服务器的规范,它期望:
POST /SharingpointCheckBarcode.asmx HTTP/1.1 Host: awc.test.trin-it.nl Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/checkBarcode" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <AuthHeader xmlns="http://tempuri.org/"> <username>string</username> <password>string</password> </AuthHeader> </soap:Header> <soap:Body> <checkBarcode xmlns="http://tempuri.org/"> <barcode>string</barcode> </checkBarcode> </soap:Body> </soap:Envelope>
但Android KSOAP2发出的是什么:
<?xml version="1.0" encoding="utf-8"?> <v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"> <v:Header /> <v:Body> <checkBarcode xmlns="http://tempuri.org" id="o0" c:root="1"> <username i:type="d:string">test</username> <password i:type="d:string">test</password> <barcode i:type="d:string">2620813000301</barcode> </checkBarcode> </v:Body> </v:Envelope>
使用此代码:
try { SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("username", "test"); request.addProperty("password", "test"); request.addProperty("barcode", "2620813000301"); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.encodingStyle = "test"; envelope.setOutputSoapObject(request); AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL); androidHttpTransport.debug = true; androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); androidHttpTransport.call(SOAP_ACTION, envelope); Log.d("MyAPP", "----------------- " + androidHttpTransport.requestDump +"\r\n\r\n" + androidHttpTransport.responseDump); ((TextView)findViewById(R.id.lblStatus)).setText(androidHttpTransport.requestDump +"\r\n\r\n" + androidHttpTransport.responseDump); } catch(Exception E) { ((TextView)findViewById(R.id.lblStatus)).setText("ERROR:" + E.getClass().getName() + ": " + E.getMessage()); }
我从服务器返回的响应是没有找到结果,所以不是错误,但是当我用另一个App或PHP测试它时,它使用相同的数据,它说没关系。
我认为这是因为
I am trying to post to my own test soap server (C#) with Android in combination with KSOAP2.
Now I have the specifications from the SOAP server, it expects:
POST /SharingpointCheckBarcode.asmx HTTP/1.1 Host: awc.test.trin-it.nl Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/checkBarcode" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <AuthHeader xmlns="http://tempuri.org/"> <username>string</username> <password>string</password> </AuthHeader> </soap:Header> <soap:Body> <checkBarcode xmlns="http://tempuri.org/"> <barcode>string</barcode> </checkBarcode> </soap:Body> </soap:Envelope>
But what Android KSOAP2 sends out:
<?xml version="1.0" encoding="utf-8"?> <v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"> <v:Header /> <v:Body> <checkBarcode xmlns="http://tempuri.org" id="o0" c:root="1"> <username i:type="d:string">test</username> <password i:type="d:string">test</password> <barcode i:type="d:string">2620813000301</barcode> </checkBarcode> </v:Body> </v:Envelope>
With this code:
try { SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("username", "test"); request.addProperty("password", "test"); request.addProperty("barcode", "2620813000301"); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.encodingStyle = "test"; envelope.setOutputSoapObject(request); AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL); androidHttpTransport.debug = true; androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); androidHttpTransport.call(SOAP_ACTION, envelope); Log.d("MyAPP", "----------------- " + androidHttpTransport.requestDump +"\r\n\r\n" + androidHttpTransport.responseDump); ((TextView)findViewById(R.id.lblStatus)).setText(androidHttpTransport.requestDump +"\r\n\r\n" + androidHttpTransport.responseDump); } catch(Exception E) { ((TextView)findViewById(R.id.lblStatus)).setText("ERROR:" + E.getClass().getName() + ": " + E.getMessage()); }
The response I get back from the server is that there are no results found, so not an error, but when I test it with another App or PHP, it with the same data, it says it's OK.
I think it's because of the
原文:https://stackoverflow.com/questions/2566026
最满意答案
一种解决方案是使用text()并进行多个调用,仔细选择每个字母的位置:
import pylab as plt a=[0,1] b=[0,1] plt.plot(a,b,'g',linewidth=3.5, label = 'a') plt.rc('text', usetex=True) plt.legend(labelspacing = 1.0,loc=1,prop={'size':40}) plt.text(0.45,-0.08,'a',fontsize=50) plt.text(0.53,-0.08, 'N',fontsize = 20)
这并不理想。 另一种选择是通过LaTeX。 查看我即将发布的其他答案。
One solution is to use text() and make multiple calls, carefully selecting where each letter goes:
import pylab as plt a=[0,1] b=[0,1] plt.plot(a,b,'g',linewidth=3.5, label = 'a') plt.rc('text', usetex=True) plt.legend(labelspacing = 1.0,loc=1,prop={'size':40}) plt.text(0.45,-0.08,'a',fontsize=50) plt.text(0.53,-0.08, 'N',fontsize = 20)
This isn't ideal. Another option is to go through LaTeX. See other answer I'm about to post.
相关问答
更多-
如果您使用“pylab”进行交互式绘图,则可以在创建时使用pylab.ylabel('Example', fontsize=40)设置labelsize。 如果pyplot编程方式使用pyplot您可以使用ax.set_ylabel('Example', fontsize=40)或以后用ax.yaxis.label.set_size(40)设置fontsize。 If you are using the 'pylab' for interactive plotting you can set the lab ...
-
使用python matplotlib更改一个轴的每个tick的fontsize(change fontsize of each tick of one axis with python matplotlib)[2022-11-13]
你可以遍历ticks( plt.gca().xaxis.get_major_ticks() )并设置如下属性: import matplotlib.pyplot as plt MP_TICKSIZE = [10.0, 15.0, 20.0] plt.subplot(111) x = [1.0, 2.0, 3.0] y = [1.0, 2.0, 3.0] plt.plot(x,y) plt.gca().set_xticks([t for t in x]) count = 0 for tick in ... -
一种解决方案是使用text()并进行多个调用,仔细选择每个字母的位置: import pylab as plt a=[0,1] b=[0,1] plt.plot(a,b,'g',linewidth=3.5, label = 'a') plt.rc('text', usetex=True) plt.legend(labelspacing = 1.0,loc=1,prop={'size':40}) plt.text(0.45,-0.08,'a',fontsize=50) plt.text(0.53,-0.08 ...
-
来自docs : 设置三个可用轴标题之一。 可用标题位于中心轴上方,与左边缘齐平,与右边缘齐平。 所以,有3个不同的标题。 当你执行dir(ax)你会注意到'_left_title'和'_right_title' 。 所以: fig, ax = plt.subplots() ax.set_title('test_title', loc='left', fontsize=30) print ax._left_title.get_fontsize() 30.0 From docs: Set one of t ...
-
您可以在绘图之前设置参数: plt.rcParams['xtick.labelsize'] = "xx-small" plt.rcParams['ytick.labelsize'] = "xx-small" You can set the parameters before plot: plt.rcParams['xtick.labelsize'] = "xx-small" plt.rcParams['ytick.labelsize'] = "xx-small"
-
使用stix字体在Matplotlib中制作标签Italic和Bold样式(Make a label both Italic and Bold style in Matplotlib with stix font)[2022-04-23]
需要一些更具体的mathtext参数: from numpy import * from matplotlib.pyplot import * # Changing font to stix; setting specialized math font properties as directly as possible rcParams['mathtext.fontset'] = 'custom' rcParams['mathtext.it'] = 'STIXGeneral:italic' rcPara ... -
matplotlib - 更改figsize但保持fontsize不变(matplotlib - change figsize but keep fontsize constant)[2021-09-16]
在这种情况下,字体大小将相同(即也是10个点)。 但是,在Jupyter Notebook中,如果数字太宽,则数字可能会以不同的大小显示,如下所示: 请注意,以磅为单位的字体大小具有线性比例,因此如果您希望字母的大小正好是两倍大,则需要输入两倍大小的点(例如20pt)。 这样,如果您希望以原始大小的50%(长度和宽度,而不是区域)打印第二个数字,则字体大小相同。 但是,如果此脚本的唯一目的是使图形打印,则最好根据需要设置尺寸(在纸上或屏幕上),然后使字体大小相等。 然后,您可以将它们以完全相同的大小或比例粘 ... -
运行此应用程序时,应在Visual Studio输出窗口中看到一些绑定错误。 这是因为它试图在Label对象上找到绑定的ContentFontSize属性,而不是在实际的DataContext 。 将您的Label元素更改为以下内容:
相关文章
更多- SOAP 介绍
- SOAP 简单示例
- SOAP Body 元素详解
- SOAP Header 元素详解
- SOAP Fault 元素详解
- SOAP HTTP 协议
- SOAP 消息语法结构
- SOAP Envelope 根元素详解
- android布局问题
- Professional Android 4 Application Development
最新问答
更多- 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
- 如何通过引用返回对象?(How is returning an object by reference possible?)
- 矩阵如何存储在内存中?(How are matrices stored in memory?)
- 每个请求的Java新会话?(Java New Session For Each Request?)
- css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
- 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
- xcode语法颜色编码解释?(xcode syntax color coding explained?)
- 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
- 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
- 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
- 西安哪有PLC可控制编程的培训
- 在Entity Framework中选择基类(Select base class in Entity Framework)
- 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
- 电脑二级VF有什么用
- Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
- 金华英语角.
- 手机软件如何制作
- 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
- 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
- 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
- Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
- 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
- python的访问器方法有哪些
- DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
- 在Ruby中对组合进行排序(Sorting a combination in Ruby)
- 网站开发的流程?
- 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
- 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
- 透明度错误IE11(Transparency bug IE11)
- linux的基本操作命令。。。