如何发送请求以获取jSON响应

时间:2012-11-29 06:47:59

标签: iphone objective-c ios json

我正在尝试使用POST方法向键值对发送HTTP-POST请求,这反过来又向我发送了一个jSON响应。

CODE

//[dictionnary setObject:@"tId" forKey:@"serialnumber"];
 NSMutableDictionary *dictionnary = [NSMutableDictionary dictionary];
         [dictionnary setObject:[NSString stringWithFormat:@"tId"] forKey:@"serialnumber"];
   [dictionnary setObject:[NSString stringWithFormat:@"tname"]  forKey:@"mobileimei"];
    [dictionnary setObject:[NSString stringWithFormat: @"tprice"] forKey:@"submerchantguid"];
    [dictionnary setObject:[NSString stringWithFormat: @"tquan"] forKey:@"transactionid"];
    [dictionnary setObject:[NSString stringWithFormat: @"tquan"] forKey:@"emailid"];
    [dictionnary setObject:[NSString stringWithFormat: @"tquan"] forKey:@"mobileno"];
    [dictionnary setObject:[NSString stringWithFormat: @"tquan"] forKey:@"signature"];
    [dictionnary setObject:[NSString stringWithFormat:@"tquan"] forKey:@"photo"];


 NSError *error = nil;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionnary
                                                       options:kNilOptions
                                                         error:&error];
    NSLog(@"Error is %@",error);

   NSString *urlString = @"MY_POST_URL/transaction/model/transactionsuccess";
    //NSString *urlString = @"http://yahoo.com";
    NSURL *url = [NSURL URLWithString:urlString];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"POST"];

    [request setHTTPBody:jsonData];
    NSURLResponse *response = NULL;
    NSError *requestError = NULL;
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&requestError];
    NSLog(@"request Error %@",requestError);
    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] ;
    NSLog(@"%@", responseString);

输出

inside submitinfo method
2012-11-29 12:13:02.238 ReaderDeployment[1568:11f03] Error is (null)
2012-11-29 12:13:03.005 ReaderDeployment[1568:11f03] request Error (null)
2012-11-29 12:13:03.006 ReaderDeployment[1568:11f03] <!DOCTYPE html PUBLIC
    "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>PHP notice</title>

<style type="text/css">
/*<![CDATA[*/
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;margin:0;padding:0;}
body{line-height:1;}
ol,ul{list-style:none;}
blockquote,q{quotes:none;}
blockquote:before,blockquote:after,q:before,q:after{content:none;}
:focus{outline:0;}
ins{text-decoration:none;}
del{text-decoration:line-through;}
table{border-collapse:collapse;border-spacing:0;}

body {
    font: normal 9pt "Verdana";
    color: #000;
    background: #fff;
}

h1 {
    font: normal 18pt "Verdana";
    color: #f00;
    margin-bottom: .5em;
}

h2 {
    font: normal 14pt "Verdana";
    color: #800000;
    margin-bottom: .5em;
}

h3 {
    font: bold 11pt "Verdana";
}

pre {
    font: normal 11pt Menlo, Consolas, "Lucida Console", Monospace;
}

pre span.error {
    display: block;
    background: #fce3e3;
}

pre span.ln {
    color: #999;
    padding-right: 0.5em;
    border-right: 1px solid #ccc;
}

pre span.error-ln {
    font-weight: bold;
}

.container {
    margin: 1em 4em;
..........

请纠正代码中的错误。我也尝试使用

发送所有值的详细信息
[dictionnary setObject:@"tId" forKey:@"serialnumber"];

格式也。我没有得到任何错误,仍然没有达到预期的jSON响应.Backend只接收信息,并将状态抛出为“0”或“1”。而不是显示一些奇怪的输出,我想它是css脚本。

1 个答案:

答案 0 :(得分:1)

你在服务器端有错误,你不能直接使用json你必须先将json转换为数组 json_decode 然后再使用数组的值

这是如何将php json转换为数组http://php.net/manual/en/function.json-decode.php

还要返回json,你应该再次格式化你的php数组到JSON编码