ASIHTTPRequest + WCF POST XML

Posted

技术标签:

【中文标题】ASIHTTPRequest + WCF POST XML【英文标题】: 【发布时间】:2011-07-06 05:45:01 【问题描述】:

我正在尝试让我的应用将数据发送到 WCF RESTful Web 服务。

此时我没有收到来自 ASIHTTPRequest 的任何错误消息,但 Web 服务也没有执行任何操作。

你们可以看看它,看看你能不能发现什么?

Xcode

NSURL *url = [NSURL URLWithString:@"http://www.mydomian.com/create"];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

NSData *myPostData = [[NSString        stringWithFormat:@"<Product><Description>desc1</Description><Id></Id><Name>some    body</Name></Product>"] dataUsingEncoding:NSUTF8StringEncoding];

NSMutableData *myMutablePostData = [NSMutableData dataWithData:myPostData];

[request setPostBody:myMutablePostData];

[request setRequestMethod:@"POST"];

[request addRequestHeader:@"Content-Type" value:@"application/xml"];

[request setDelegate:self];

[request startSynchronous];

网络服务

...

公开课产品 [数据成员] 公共字符串 ID 获取;放;

    [DataMember]
    public string Name  get; set; 

    [DataMember]
    public string Description  get; set; 

...

[操作合同] [WebInvoke(UriTemplate = "/create", Method = "POST", RequestFormat=WebMessageFormat.Xml, BodyStyle=WebMessageBodyStyle.Bare)] void CreateProduct(产品产品);

...

...创建产品...

myConnection.Open();

            string insertString = "insert into tbldata (desc,Name) values (@desc,@Name)";
            mysqlCommand myCommand = new MySqlCommand(insertString, myConnection);

            myCommand.Parameters.Add("@desc", MySqlDbType.VarChar, 12);
            myCommand.Parameters.Add("@Name", MySqlDbType.VarChar, 40);

            myCommand.Parameters["@desc"].Value = product.Description;
            myCommand.Parameters["@Name"].Value = product.Name;


            myCommand.ExecuteNonQuery();

【问题讨论】:

您是否尝试过为此请求实现委托方法?您应该会收到有助于确定问题所在的错误消息。 setDidFinishSelector 返回空响应字符串。当我询问 responseStatusCode 时,我得到了 200。 【参考方案1】:

您的请求在我看来没问题,但您可以尝试使用其他工具进行测试,例如在命令行中使用 curl 来确定。这里有一些尝试:

curl -D headers.txt -X POST -H 'Content-Type:application/xml' -d '<Product><Description>desc1</Description><Id></Id><Name>somebody</Name></Product>' http://www.mydomain.com/create

检查响应正文的标准输出和响应标头的headers.txt。您应该获得与您在 ios 应用程序中获得的相同的东西。

就服务器端响应而言,请尝试使用不同的状态代码或正文进行响应。

【讨论】:

以上是关于ASIHTTPRequest + WCF POST XML的主要内容,如果未能解决你的问题,请参考以下文章

ASIHTTPRequest中的DELETEPUTGETPOST请求实例-备用

AFNetworking V2.0 中的多参数 POST

ios开发中怎么post上传字符串

POST 到 WCF 服务

如何以 JSON 形式返回 WCF 服务 POST 响应

如何通过 post 将 xml 发送到 wcf 服务