因为RubyMotion在编译时似乎做了很多类型转换,所以我无法将正确的数据类型传递到NSMutableURLRequest POST请求中。它期待着NSData,但我无法弄清楚如何在不抛出错误的情况下为NSData键入一个NSString变量。如果没有类型转换,我们的SOAP服务器无法正确接收数据,并且我得到可怕(模糊)的“根级数据无效,行1,位置1”错误。RubyMotion >>如何将变量作为特定类型投射?
这是问题的行:
postXML = "<xml><whatever>hey</whatever></xml>"
postData = (postXML as NSData).dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true);
request = NSMutableURLRequest.alloc.init
request.setURL(NSURL.URLWithString("https://services.sbx1.cdops.net/v4.3/SubscriberServicePox.svc/Login"))
request.setHTTPMethod("POST")
request.setValue("application/xml", forHTTPHeaderField: "Content-Type")
request.setHTTPBody(postData, dataUsingEncoding:NSUTF8StringEncoding)
theConnection = NSURLConnection.alloc.initWithRequest(request, delegate:self)
任何帮助,将不胜感激。
'(postXML as NSData)'应该只是末尾没有分号的'postXML',否则你的代码不会为我抛出任何错误,如果我检查'request.HTTPBody',它是' NSConcreteMutableData'对象,而不是'NSString'。你的代码的哪个特定部分抛出错误? –
就显式类型转换而言,RubyMotion似乎为您处理所有这些。 上调用一个NSString一个NSData的方法有效地类型中,它适当地: 之前 loginPostXML =(loginPostXML作为NSData的).dataUsingEncoding(NSUTF8StringEncoding,allowLossyConversion:真); 后 loginPostXML = loginPostXML.dataUsingEncoding(NSUTF8StringEncoding,allowLossyConversion:true) 一个简单的解决方案,但类型模糊仍然存在(不幸)。 – cnp
'dataUsingEncoding'是将NSString转换为NSData的标准方法。你是说只是使用'loginPostXML.dataUsingEncoding ...'为你解决吗?如果是这样,我可以添加它作为正式答案。 –