将数据从 ios 应用程序传递到 C# Web 服务

Posted

技术标签:

【中文标题】将数据从 ios 应用程序传递到 C# Web 服务【英文标题】:passing data from ios app to C# web service 【发布时间】:2013-11-03 06:12:53 【问题描述】:

我正在尝试开发这个可以在本地网络下与 C# Web 服务通信的 ios 应用程序。我正在使用AFNetworking 来实现通信。现在我已经在this tutorial 的帮助下实现了从Web 服务读取xml 数据,这意味着我的应用程序可以连接到Web 服务,我想。但我真正想做的是,将数据从应用程序传递到 Web 服务。我已经写了一些示例代码:

AFmyAPIClient *myClient = [AFmyAPIClient sharedClient];
NSMutableDictionary *requestArray = [NSMutableDictionary new];
NSString *details = [_listOfItems description];
float tempF= [_listOfItems totalPrice];
NSString *price = [NSString stringWithFormat:@"%f",tempF];
int tempI = 1;
NSString *table = [NSString stringWithFormat:@"%u",tempI];

[requestArray setObject:details forKey:@"details"];
[requestArray setObject:price forKey:@"price"];
[requestArray setObject:table forKey:@"table"];

[myClient postPath:@"setOrderDetails" parameters:requestArray success:^(AFHTTPRequestOperation *operation, id responseObject) 
        NSLog(@"success!");
     failure:^(AFHTTPRequestOperation *operation, NSError *error) 
        NSLog(@"%@",error);
    ];

在我构建并运行此应用程序后,它会生成以下错误消息:

2013-11-03 16:25:48.654 HLR[16149:70b] <?xml version="1.0" encoding="utf-8"?>
<int xmlns="http://localhost/service/Service1.asmx">3</int>
2013-11-03 16:25:48.844 HLR[16149:70b] Error Domain=AFNetworkingErrorDomain Code=-1011 "Expected status code in (200-299), got 500" UserInfo=0x8b5b140 NSLocalizedRecoverySuggestion=Missing parameter: orderDetails.
, AFNetworkingOperationFailingURLRequestErrorKey=<NSMutableURLRequest: 0x8b5bb70>  URL: http://10.0.0.111/service/Service1.asmx/setOrderDetails , NSErrorFailingURLKey=http://10.0.0.111/service/Service1.asmx/setOrderDetails, NSLocalizedDescription=Expected status code in (200-299), got 500, AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0x8b4e910>  URL: http://10.0.0.111/service/Service1.asmx/setOrderDetails   status code: 500, headers 
    "Cache-Control" = private;
    "Content-Length" = 34;
    "Content-Type" = "text/plain; charset=utf-8";
    Date = "Sun, 03 Nov 2013 05:25:34 GMT";
    Server = "Microsoft-IIS/7.5";
    "X-AspNet-Version" = "2.0.50727";
    "X-Powered-By" = "ASP.NET";
 

在我的 C# Web 服务端,我有如下 Web 方法:

[Web Method]
public void setOrderDetails(String orderDetails)

         //store orderDetails into a text file.


我是 iOS 开发新手,我不明白当我调用此方法时,我真正传递给 Web 服务的是什么:

[myClient postPath:@"setOrderDetails" parameters:requestArray success:^(AFHTTPRequestOperation *operation, id responseObject) 
            NSLog(@"success!");
         failure:^(AFHTTPRequestOperation *operation, NSError *error) 
            NSLog(@"%@",error);
        ];

我只是将 NSDictionary 作为参数传递给 C# Web 服务吗?如果是这样,我可以在 Web 服务端使用这个 NSDictionary 做什么?

我不知道这是否是实现向 Web 服务传递数据的正确方法。我在这里真正想做的是将一些字符串传递给 Web 服务,我该如何实现呢?

任何建议将不胜感激!

【问题讨论】:

【参考方案1】:

您将 XML 内容作为 URL 参数传递。您需要在请求的正文中传递它。以下是解决使用 AFNetworking 发布 XML 的几个问题:

Example on using AFNetworking to post XML?

AFNetworking - Making an XML POST request to REST service? How to form NSDictionary parameters?

【讨论】:

如果我传递的是 XML 内容,如何在 C# Web 服务端引用 XML 内容?你能告诉我一个示例 [Web 方法] 来处理我从应用程序发送的 XML 吗? 您没有以 XML 格式发送数据。我以为这就是你想做的。现在您将它作为 URL 参数传递。有很多教程可以在 C# 中使用这篇文章。我没有。 是的,这很有道理,我现在有点难以理解 AFNetworking。我也有这个问题,我之前说过,我不明白如何在 C# Web 服务端响应 POST,请您建议我一些教程来教我这样做吗?

以上是关于将数据从 ios 应用程序传递到 C# Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC - 使用 C# 将引用不同程序集的模型从控制器传递到视图

我无法将数据从 c# 服务器传递到 GCM 应用程序

将对象从dll文件传递到文件asp.net c#后面的代码

如何安全地将字符串引用从 c# 传递到 c++?

如何将数据从非托管应用程序传递到 C# COM DLL

将异步数据从网页传递到我的窗体 C# .NET 应用程序