如何在 Objective c 中使用 JSON 服务发布数据

Posted

技术标签:

【中文标题】如何在 Objective c 中使用 JSON 服务发布数据【英文标题】:How to POST data using JSON service in Objective c 【发布时间】:2017-04-27 10:54:59 【问题描述】:

我已经制作了一个登录表单。字段 r 电子邮件和密码。现在我想将字段中的数据发布到特定的 url,它是如何完成的。我对ios完全陌生。有谁能够帮助我??如何进行 HTTP 请求和 JSON 解析?

【问题讨论】:

Sending an HTTP POST request on iOS的可能重复 你在使用 REST 调用吗? Post data in Objective C using Json的可能重复 您也是研究工具的新手?因为有很多问题询问如何做到这一点。此外,您可能希望提供有关您的 Web API 的详细信息(如果有特定的内容),展示您尝试过的内容等。 【参考方案1】:
/*********See this**********/
-(void)webServiceCall

NSString *dataToSend = [NSString stringWithFormat:@"Username=%@&Password=%@“,<userIdEnter Here>,<Password enter here>]; 
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
NSString *Length = [NSString stringWithFormat:@"%d",[postData length]]; 

[request setURL:[NSURL URLWithString:@“WEBURL”]]; 
[request setHTTPMethod:@"POST"]; 

[request setValue:Length forHTTPHeaderField:@"Content-Length"]; 

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

[request setHTTPBody:postData];

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 


 
// check connection if you want

/*****get response in delegates*******/



 - (void)connection:(NSURLConnection *)connection didReceiveResponse:
  (NSURLResponse *)response 
    // A response has been received, this is where we initialize the instance var you created
    // so that we can append data to it in the didReceiveData method
    // Furthermore, this method is called each time there is a redirect so reinitializing it
    // also serves to clear it

    _responseData = [[NSMutableData alloc] init];

      
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
    
         /**************/
  NSString* newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];


    NSError* error;
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data
                                                         options:kNilOptions
                                                           error:&error];

   // NSArray* latestLoans = [json objectForKey:@"loans"];

    NSLog(@"json: %@", json);

    [_responseData appendData:data];



    
    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
    
 NSLog(@"Error --> %@",error.localizedDescription);
        /***************/
    
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    
 NSString *responseString = [[NSString alloc] initWithData:self.responseData encoding:NSUTF8StringEncoding];

 NSError *error = nil;
        id result = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
// use Result
self.responseData = nil;

    

【讨论】:

在响应代表中写什么? @ajjjjjjjj 说真的我不明白你能详细说明一下代码吗?在哪里编写此代码我们如何获得响应以及在哪里编写响应委托? @ajjjjjjjj 首先,您必须将代码粘贴到要调用 Web 服务的类中。现在,在 login Button 上调用方法webServiceCall,您必须在其中更改用户输入的 user_id 和密码。调用发生后,将调用“NSUrlConnection”委托(阅读委托文档)。在connectionDidFinishLoading 得到回复后。您必须以这种方式解析数据` id result = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; `。之后,您可以使用“结果” 你为什么降级? 我没有。@ajjjjjjjj

以上是关于如何在 Objective c 中使用 JSON 服务发布数据的主要内容,如果未能解决你的问题,请参考以下文章

如何解析 JSON 响应并在 Objective C 中使用它?

如何在 Objective C 中解析 JSON 格式

如何在 Objective C 中解析***的 JSON 数据?

如何在 Objective C 中形成 JSON 格式的可变数组

如何将包含 JSON 的 JSON NSString 从 Objective C 方法传递给 Javascript 方法

如何在 Objective C 中表示当前的 JSON 模式?