Cómo publicar una solicitud en un script php con variables de solicitud y publicación en el objetivo C

Quiero enviar una solicitud de publicación desde el código Objective-C a un script php con URL

http://ggg.abc.com/example.php?MO&email=test@gmail.com&message=TESTMSG&recipient=11111

Traté de usar ASIFormDataRequest como se muestra a continuación, pero ¿cómo especifico la variable de solicitud MO en la solicitud?

NSURL* url = [NSURL URLWithString:ServerApiURL];
ASIFormDataRequest* request = [ASIFormDataRequest requestWithURL:url];
[request setDelegate:self];

// Add the POST fields
//[request setPostValue:@"" forKey:@"MO"];
//[request setRequestMethod:@"MO"];

[request setPostValue:@"test@gmail.com" forKey:@"email"]; 
[request setPostValue:@"TESTMSG" forKey:@"message"];
[request setPostValue:@"11111" forKey:@"recipient"];

¿O alguna otra forma de hacer esto?

preguntado el 22 de mayo de 12 a las 21:05

esa variable es ciertamente no estándar. no va a ser fácil para ti :) -

Dado que la secuencia de comandos en la que está publicando probablemente solo verifique si la variable MO está definida, supongo que probablemente no importe en qué lo configure:

En el código php, se marca si (isset($_REQUEST["MO"])), así que intenté no establecer ningún valor y enviarlo como una variable de publicación, pero no funcionó. Gracias por mirar en esto.. -

Como [request setPostValue:@"" forKey:@"MO"]; no funciono, has probado [request setPostValue:@"MO" forKey:@""];? -

Quería decir que [request setPostValue:@"" forKey:@"MO"]; también funcionó, si cambio el php a _POST para verificar la variable. -

1 Respuestas

Como último recurso, -appendPostData: debería funcionar.

Solicitudes PUT y POST personalizados


Si desea enviar datos a través de PUT, o desea enviarlos con POST pero prefiere crear el cuerpo POST usted mismo, use appendPostData: o appendPostDataFromFile:.

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request appendPostData:[@"This is my data" dataUsingEncoding:NSUTF8StringEncoding]];
// Default becomes POST when you use appendPostData: / appendPostDataFromFile: / setPostBody:
[request setRequestMethod:@"PUT"];

Si desea enviar grandes cantidades de datos y no está utilizando ASIFormDataRequest, consulte la información sobre la transmisión de cuerpos de publicaciones desde el disco a continuación.


Para ti esto sería:

NSURL* url = [NSURL URLWithString:ServerApiURL];
ASIFormDataRequest* request = [ASIFormDataRequest requestWithURL:url];
[request setDelegate:self];
[request appendPostData:[@"MO&email=test@gmail.com&message=TESTMSG&recipient=11111" dataUsingEncoding:NSUTF8StringEncoding]];

Buena suerte


Actualizar la respuesta para el último comentario

NSURL* url = [NSURL URLWithString:ServerApiURL];
NSURL* urlWithParams = [NSURL URLWithString:@"?MO&email=test@gmail.com&message=TESTMSG&recipient=11111" relativeToURL:url];
ASIFormDataRequest* request = [ASIFormDataRequest requestWithURL:urlWithParams];
[request setDelegate:self];
// Does this request need to be a post? If so, then call -setRequestMethod:.
// NOTE: I don't know if zero length posts work.
[request setRequestMethod:@"POST"];

contestado el 23 de mayo de 12 a las 15:05

Gracias, Jeffery. Intenté appendPostData, no funcionó. Creo que la razón es el código php. Como php ya existe y en php está usando (isset($_REQUEST["MO"]) para verificar la variable (en lugar de $_POST["MO"]). ¿Necesito alguna forma especial en el código de Objective-C? para decir que es una variable de solicitud (no una variable de publicación). Si es así, ¿sabe cómo? O tengo que cambiar el php (no hay otra opción). - user1165756

Actualicé mi respuesta y la parte inferior. - jeffery thomas

Jeffery, acabo de intentar enviar una solicitud a url(ggg.abc.com/example.php), pero ni siquiera esto funcionó para mí. Pero desde el safari en el mac funciona. Pero no funciona desde el safari en el dispositivo. Entonces, cómo depurar por qué no va al servidor. Este es el servicio web Apache que se ejecuta en ese servidor. No sé si hay alguna restricción para acceder desde el código, también en la configuración del navegador. - user1165756

hay un problema con 3G, cuando enciendo wifi, ahora puedo enviar solicitudes a (ggg.abc.com/example.php) desde el código y el dispositivo. Probé tu última publicación, funciona solo después de cambiar el php también a $_POST["MO"]). Desearía no tener que cambiar php... Pero feliz al menos funciona... Gracias por toda su ayuda. - user1165756

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.