i créer serveur php et j'appeler cette fonction dans mon objectif cJSON Parse chaîne
public function getCOMPAINs(){
$query = "SELECT COMPAINCOMPAIN_ID FROM COMPAIN_USER WHERE USERUSER_ID = '$this->USER_ID'";
$MyConnection = new MyConnection();
$result = mysql_query($query,$MyConnection->Connection) or die(mysql_error());
while($obj=mysql_fetch_object($result)) {
$res[] = array('COMPAIN_ID' => $obj->COMPAINCOMPAIN_ID);
}
return json_encode($res);
}
si je tente appeler cette fonction avec php je peux montrer cette réponse
array(2) {
[0]=>
array(1) {
["COMPAIN_ID"]=>
string(2) "44"
}
[1]=>
array(1) {
["COMPAIN_ID"]=>
string(2) "46"
}
}
Comment puis-je analyser ces données de réponse avec JSON? i essayer de faire cette solution mais en utilisant XML
- (NSMutableData *)sendRequestCompains{
NSMutableString *sRequest = [[NSMutableString alloc] init];
[sRequest appendString:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>"];
[sRequest appendString:@"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"];
[sRequest appendString:@"<soap:Body>"];
[sRequest appendString:@"<getCOMPAINs xmlns=\"http://tempuri.org/PlatformService/method\">"];
[sRequest appendString:@"<Id_USR>"]; // any attribute
[sRequest appendString:@"1"]; // attribute value
[sRequest appendString:@"</Id_USR>"];
[sRequest appendString:@"</getCOMPAINs>"];
[sRequest appendString:@"</soap:Body>"];
[sRequest appendString:@"</soap:Envelope>"];
NSURL *ServiceURL = [NSURL URLWithString:@"http://79.249.37.1/server_comp.php"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:ServiceURL];
[request addValue:@"text/xml; charset:UTF-8" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"http://79.249.37.1/server_comp.php/getCOMPAINs" forHTTPHeaderField:@"SOAPAction"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[sRequest dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if (conn) {
data = [[NSData data] retain];
NSLog(@"Connection success");
[NSURLConnection connectionWithRequest:request delegate:self];
NSError *WSerror;
NSURLResponse *WSresponse;
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&WSresponse error:&WSerror];
NSLog(@"slt%d",[data length]);
}
return data;
}
i essayer cette solution, mais pas WOR k
NSData * webData=[[NSMutableData alloc] initWithData:self.sendRequestCompains];
// Create new SBJSON parser object
SBJSON *parser = [[SBJSON alloc] init];
NSString *json_string = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];
NSArray *statuses = [parser objectWithString:json_string error:nil];
for (NSDictionary *status in statuses)
{
NSLog(@"%@", [status objectForKey:@"0"]);
}
the response recived from server
<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:getCOMPAINsResponse xmlns:ns1="http://tempuri.org/PlatformService/method"><COMPAIN xsi:type="xsd:string">[{"COMPAIN_ID":"44"},{"COMPAIN_ID":"46"}]</COMPAIN></ns1:getCOMPAINsResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
i essayer cette solution, mais fonctionne pas
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL
URLWithString:@"http://79.249.37.1/server_comp.php/getCOMPAINs.json?userId=1"]];
// execution de la requête et récupération du JSON via un objet
NSData NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
// On récupère le JSON en NSString depuis la réponse NSString *json_string = [[NSString alloc] initWithData:response
encoding:NSUTF8StringEncoding];
// on parse la reponse JSON NSArray *statuses = [parser objectWithString:json_string
error:nil];
for (NSDictionary *status in statuses) { // on peut recuperer les valeurs en utilisant objectForKey à
partir du status qui est un NSDictionary // on log le tweet et le nom de l utilisateur NSLog(@"%@", [status objectForKey:@"COMPAIN_ID"]); }
Ajoutez la réponse de votre serveur (le JSON, pas la sortie PHP pritn_r!) À la question s'il vous plaît! L'un de vos commentaires ci-dessous dit 'recive json dans la chaîne xml' et cela n'a aucun sens - nous avons besoin de plus d'informations. – deanWombourne
cela le includ JSON en réponse [{" COMPAIN_ID ": }, {" COMPAIN_ID ": }] –
aucune aide pour moi? –