[英]How to Post json Array to Php server using webservices
我使用以下代码将数组发送到php服务器,但在php端它们没有任何值。我将数组作为json字符串发送。
- (void)postArray {
//Create the URL request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://test.com./t.php"]];
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:@"one"];
[array addObject:@"Two"];
[array addObject:@"three"];
[array addObject:@"four"];
[request setHTTPMethod:@"POST"];
// NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:array,@"comment", nil];
SBJSON *parser =[[SBJSON alloc] init];
// NSString *jsonString = [parser stringWithObject:dict];
NSString *jsonString = [parser stringWithObject:array];
NSLog(@"Str %@",jsonString);
[request setValue:@"application/x-www-form-urlencoded"
forHTTPHeaderField:@"Content-Type"];
[request setValue:jsonString forHTTPHeaderField:@"comment"];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
NSInteger statusCode = [HTTPResponse statusCode];
if (statusCode==200) {
//Request goes in success
NSError* error;
NSMutableDictionary* json = [NSJSONSerialization
JSONObjectWithData:data //1
options:kNilOptions
error:&error];
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"Json for post array ----------%@",str);
}else{
///request is get failed
NSLog(@"Error Description %@",[error description]);
}
}];
[request release];
}
和在PHP的输出是
<pre> <br>这是从Iphone获得的响应<br> First <br> <br> end First <br> Second接收json响应并解码json响应<br> <br> nullThird逗号分隔([0 ] =>)
这是PHP代码
<?php
echo "<pre>";
echo "<br>";
//echo "Testing array";
$totalitem=$_POST['total'];
echo "This is response getting from the Iphone";
echo "<br>";
echo "First";
echo $jsonarray1=$_POST['comment'];
echo "<br>";
print_r($jsonarray1);
echo "<br>";
echo "end First";
echo "<br>";
echo "Second receive json response and decode the json response";
echo "<br>";
echo $comment=$_POST['comment'];
echo "<br>";
$jsonarray=json_decode($comment);
echo json_encode($jsonarray);
echo "Third Breaking from comma";
echo "<br>";
$allval=explode(',',$jsonarray1);
print_r($allval);
?>
请帮忙
尝试遵循以下代码可能对您有所帮助。 尝试创建一个NSMutableDictionary,然后创建POST。
NSMutableDictionary *dictionnary = [NSMutableDictionary dictionary];
[dictionnary setObject:@"First" forKey:@"First"];
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionnary
options:kNilOptions
error:&error];
NSString *urlString =@"Your URL";
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];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] ;
NSLog(@"%@", responseString);
这是一种整洁而简单的方法。 在您的xcode实现文件中,创建一个如下所示的方法:
注意:请记住根据您的需要对其进行自定义。 重要的一点是传递名为“ requestArray_”的请求数组。 用所需的URL更改URL位http://localhost/test/index.php
-(NSArray *) setRequestWithRequestArray:(NSArray *)requestArray_{
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:requestArray_
options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSString *post = [NSString stringWithFormat:@"requestArray=%@", jsonString];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://localhost/test/index.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLResponse *response;
NSError *errors = nil;
NSData *POSTReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:POSTReply options:0 error:&errors];
NSLog(@"request %@", request);
NSLog(@"jsonArray%@",jsonArray);
return jsonArray;
}
并在您的php中创建这样的测试方法:
$Array = $_POST["requestArray"];
function testMethod($Array){
$get_result = array();
$get_result = json_decode($Array);
foreach($get_result as $key1 => $value){
$result = array(
$key1 => $value,
$key1 => $value,
$key1 => $value,
$key1 => $value
);
}
sendResponse(200, json_encode($result));
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.