xamarin.ios – MonotouchiPhone – 当HTTP方法为DELETE时,调用HttpWebRequest.GetRequestStream()连接到服务器

xamarin.ios – MonotouchiPhone – 当HTTP方法为DELETE时,调用HttpWebRequest.GetRequestStream()连接到服务器,第1张

概述我的场景: 我正在使用Monotouch for iOS来创建iPhone应用程序.我正在调用ASP.NEt基于MVC 4 Web API的http服务来登录/注销.对于登录,我使用POST web方法,一切顺利.对于Logoff,我正在调用Delete web方法.我想将 JSON数据(序列化复杂数据)传递给Delete调用.如果我传递简单的数据,如单个字符串参数作为URL本身的一部分,那么一切 我的场景:
我正在使用Monotouch for iOS来创建iPhone应用程序.我正在调用ASP.NEt基于MVC 4 Web API的http服务来登录/注销.对于登录,我使用POST web方法,一切顺利.对于logoff,我正在调用Delete web方法.我想将 JSON数据(序列化复杂数据)传递给Delete调用.如果我传递简单的数据,如单个字符串参数作为URL本身的一部分,那么一切都很好,即删除确实有效!为了传递复杂的Json数据,这是我的调用(我调整了代码,通过只显示一个参数 – Username通过JsON发送)使其变得简单:

httpWebRequest req = (httpWebRequest)httpWebRequest.Create("http://localhost/module/API/session/");        req.ContentType = "application/Json";        req.cookieContainer = jar;        req.Method = "Delete";        using (var streamWrite = new StreamWriter(req.GetRequestStream()))        {            string JsON = "{\"Username\":\"" + "someone" + "\"}";            streamWrite.Write(JsON);            streamWrite.Close();        }        httpWebResponse res = (httpWebResponse)req.GetResponse();

服务器上,Delete方法看起来有这个定义:

public voID Delete(Credentials user)

Credentials是一种复杂类型.

现在,这是问题!

上面的代码一进入就进入服务器上的Delete方法:

req.GetRequestStream()

因此,发送到Delete方法的参数最终为null

这是奇怪的部分:
如果我使用测试VS 2010 windows应用程序使用完全相同的代码,即使上面的代码也可以工作……即在调用req.GetResponse()之前它不会调用Delete!在这种情况下,Delete方法的参数是一个有效的对象!

任何想法或这是Monotouch的错误,如果是这样,任何解决方法?

注意:

如果我将删除定义更改为public voID Delete(string username)
而不是Json,如果我将参数作为url本身的一部分传递,那么一切都很好.但就像我说的这只是一个简单的例子来说明我的问题.任何帮助表示赞赏!

解决方法 这似乎是不明确的.有关更多详细信息,请参阅此问题: Is an entity body allowed for an HTTP DELETE request?

通常,Monotouch(基于Mono)将尝试与Microsoft .NET框架兼容,以简化平台之间的代码可移植性.

如果MS.NET忽略了DELETE方法的主体,那么Monotouch也是如此.如果行为不同,则应在http://bugzilla.xamarin.com填写错误报告

总结

以上是内存溢出为你收集整理的xamarin.ios – Monotouch / iPhone – 当HTTP方法为DELETE时,调用HttpWebRequest.GetRequestStream()连接到服务器全部内容,希望文章能够帮你解决xamarin.ios – Monotouch / iPhone – 当HTTP方法为DELETE时,调用HttpWebRequest.GetRequestStream()连接到服务器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1035758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存