Как отправить параметры на сервер API, используя метод HTTP POST в iphone - PullRequest
1 голос
/ 10 июня 2011

У меня есть приложение, в котором у меня есть веб-сервер API. Это мой API

http://192.168.0.68:91/JourneyMapperAPI?RequestType=[<EntityKey>]&Command=[GET|SET|NEW]&Token=[token]&param...n=value..n

RequestType в строке запроса ожидает запрашиваемое имя объекта, которое может быть любой из таблиц базы данных.

Команда в строке запроса должна указывать операцию, которая должна быть выполнена с указанным типом запроса, который может быть GET SET или NEW или любой другой специфической для объекта командой.

Например, для.У меня есть форма регистрации, которая позволяет пользователю зарегистрироваться.
RequestType для формы регистрации - это регистрация, поэтому запрос API на нажатие кнопки отправки формы регистрации будет

http://192.168.0.68:91/JourneyMapperAPI?RequestType=Register&Command=NEW&firstname=rocky&lastname=singh&Username=rocky14&Password=[password]&Email=[email];

Как отправить этот запрос вСервер API, используя метод HTTP post со всеми этими параметрами и значениями в нем, чтобы значения были сохранены в таблице сервера с именем register. Пожалуйста, помогите мне в решении этой проблемы. Спасибо

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Вы можете использовать следующую функцию для публикации данных на веб-сервере.

-(void)callCommentWebService:(NSString *)pstrCommentXML{

    NSString *soapMsg = 
    [NSString stringWithFormat:
    @"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
    "<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/\">"
    "<soap:Body>"
    "<getImageComment xmlns=\"http://tempuri.org/\">"
    "<Commentsxml>%@</Commentsxml>"
    "</getImageComment>"
    "</soap:Body>"
    "</soap:Envelope>", pstrCommentXML
    ];


    //Create URL Request
    NSURL *url = [NSURL URLWithString: @"http://www.website.com/website/WebService.asmx?op=getImageComment"];
    NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];

    //Populate Headers
    NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMsg length]];
    [req addValue:@"text/xml; charset=utf-8"  forHTTPHeaderField:@"Content-Type"];  
    [req addValue:msgLength forHTTPHeaderField:@"Content-Length"];
    [req setHTTPMethod:@"POST"];
    [req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]];

    conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
    if (conn)
    {
        webData = [[NSMutableData data] retain];
    }
}

Здесь, url = путь к веб-сервису вашего сервера

pstrCommentXML = ваш XML-файл, формат которого определен для загрузки

Затем вы можете использовать простые методы делегата для получения ответа от сервера.

-(void) connection:(NSURLConnection *) connection didReceiveResponse:(NSURLResponse *) response 
{
    [webData setLength: 0];
}

-(void) connection:(NSURLConnection *) connection didReceiveData:(NSData *) data 
{
    [webData appendData:data];
}

- (void) connection:(NSURLConnection *) connection didFailWithError:(NSError *) error 
{
    [webData release];
    [connection release];
}

-(void) connectionDidFinishLoading:(NSURLConnection *) connection 
{

}

Надеюсь, вы поняли.

0 голосов
/ 10 июня 2011

Самый простой способ IMHO - использовать ASIHTTPRequest или его подкласс ASIFormDataRequest .
Это позволяет легко загружать текст и данные через POST, как если бы они заполняли веб-форму - отсюда и название.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...