Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-如何将JSON对象附加到web请求?(不使用NSURLConnection)_Ios_Json_Web Services_Nsdata_Nsurlrequest - Fatal编程技术网

iOS-如何将JSON对象附加到web请求?(不使用NSURLConnection)

iOS-如何将JSON对象附加到web请求?(不使用NSURLConnection),ios,json,web-services,nsdata,nsurlrequest,Ios,Json,Web Services,Nsdata,Nsurlrequest,我正在尝试向我在web服务器上设置的后端API发送一些web请求。 然而,为了使事情通用化,我希望将整个JSON对象发送到后端,并在那里对数据进行过滤,以确定请求的目的、传递的参数等 我将从一个类向不同的服务发出许多请求,因此我不想使用NSURLConnection,因为它变得很混乱,必须过滤完成处理程序中的所有结果以确定最初获取的是哪个请求 我喜欢NSURLConnection如何允许您像这样附加JSON对象,但我想知道如何使用不同的方法(比如[NSData dataWithContentsO

我正在尝试向我在web服务器上设置的后端API发送一些web请求。 然而,为了使事情通用化,我希望将整个JSON对象发送到后端,并在那里对数据进行过滤,以确定请求的目的、传递的参数等

我将从一个类向不同的服务发出许多请求,因此我不想使用NSURLConnection,因为它变得很混乱,必须过滤完成处理程序中的所有结果以确定最初获取的是哪个请求

我喜欢NSURLConnection如何允许您像这样附加JSON对象,但我想知道如何使用不同的方法(比如[NSData dataWithContentsOfURL:])


有什么建议吗?

我这样做的方法是创建一个包含NSURLConnection的NSObject类,并在该类上设置一个属性标记。然后,当下载完成时,具有连接的NSObject/NSURLConnection类将自身返回给委托。您有一个类似下面的-(void)downloadFinished示例的方法来处理委托中的回复

在NSObject类中,使用NSJsonSerialization将NSDictionary转换为Json并将其附加到NSURLConnection

我希望我可以将您链接到Github上的JsonHelper类,但是我还没有将其上载到Github:(

请求示例:

NSDictionary *post = [NSDictionary dictionaryWithObjectsAndKeys:@"Json_Value",@"Json_Key",nil];

JsonHelper *jsonHelper = [[JsonHelper alloc]initWithURL:@"http://mycoolwebservice.com" withDictionary:post
withMethod:@"POST" showIndicator:NO withDelegate:self withCache:NO];
[jsonHelper setTag:1];
[jsonHelper connectionStart];
代表答复示例:

-(void)downloadFinished:(id)sender
{
   if ([sender isKindOfClass:[JsonHelper class]]) {

    NSError *error = nil;
    JsonHelper *jsonHelper = (JsonHelper*)sender;
        NSData *data = [[NSData alloc]initWithData:jsonHelper.receivedData];
        NSString *returnString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];    

    if (jsonHelper.tag == 0) {

    // Do Something
    }

    else if (jsonHelper.tag == 1) {

    // Do Something Else
    }
  }    
}

使用此示例编写您自己的自定义类来完成或多或少相同的任务应该不会太困难。

不是答案,但是..为什么不使用RestKit?-它使服务的工作更容易。是的,这违背了我尝试的目的。我可以使用NSURLConnection和它的委托来完成处理。我想将整个流程保持在它自己的方法中,以尝试使事情有条理且易于遵循。如果您想将其包含在内,那么块似乎是合乎逻辑的选择。这可能会帮助您:另一个:是的,我最终使用NSURLConnection的sendAsynchronousRequest创建了一个块并处理其中的数据。仍然可以吗不要因为必须使用通知来进行下一步而变得混乱,但至少我不必在后端的响应数据中不断添加“标记”或过滤器来确定接收到的数据。
-(void)downloadFinished:(id)sender
{
   if ([sender isKindOfClass:[JsonHelper class]]) {

    NSError *error = nil;
    JsonHelper *jsonHelper = (JsonHelper*)sender;
        NSData *data = [[NSData alloc]initWithData:jsonHelper.receivedData];
        NSString *returnString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];    

    if (jsonHelper.tag == 0) {

    // Do Something
    }

    else if (jsonHelper.tag == 1) {

    // Do Something Else
    }
  }    
}