2012-01-16 3 views
1

Привет, я использую restkit для первого раза, и есть несколько вопросов, которые мне приходят в голову. Сначала при отправке почтового запроса с использованием restkit какой формат является запросом Json или XML и как я могу его указать? Я отправляю почтовый запрос на сервер для аутентификации пользователя и должен получить конформацию, если данные верны в формате XML.Отправить запрос на отправку в формате XML с помощью RestKit

NSArray *objects = [NSArray arrayWithObjects: email, password, nil]; 
NSArray *keys = [NSArray arrayWithObjects:@"username", @"password", nil]; 
NSDictionary *params = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 

[[RKClient sharedClient] post:@"/login" params:params delegate:self]; 

Это код, я использую, то XML приняты веб-сервисов должны выглядеть

<login> 
    <username>[email protected]</username> 
    <password>Password</password> 
</login> 

Он посылает запрос, но я не получаю правильный ответ. Есть ли способ просмотреть, какой формат запроса я отправляю на сервер?

ответ

2

Похоже, вы используете неправильный вызов. Используемый вами почтовый вызов предполагает, что служба остального хочет получить параметры, такие как login = имя пользователя & password = skdjgh, т. Е. НЕ в формате XML, а в «нормальном формате REST». Вам нужно либо найти вызов, чтобы опубликовать блок текста с помощью RestKit, либо использовать другой вызов. Другими словами, вам нужно создать XML самостоятельно (или использовать некоторую библиотеку), а затем отправить его через сообщение.

+0

Может у меня предложить способ сделать это? – greenLizard

2

Попробуйте это. Я думаю, что он должен делать то, что вы хотите. Мне никогда не приходилось работать, но у меня были другие проблемы с моим кодом.

RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:@"http://mysite.com"]; 

    objectManager.serializationMIMEType = RKMIMETypeXML; 

Примечание: это может быть то, что вы делаете для отправки XML обратно к вам, не посылая XML на сервер. Не знаю, с головы.

1

Я сделал objectManager.serializationMIMEType = RKMIMETypeXML;, но Content-Length моего запроса равен 0, а тело HTTP пусто. Если я использую RKMIMETypeJSON, запрос выглядит нормально, но сериализация xml не работает. Любые идеи, почему это происходит? Что еще мне нужно сделать, чтобы опубликовать xml с допустимой сериализацией?

Я также нашел это в документе: «RestKit в настоящее время поддерживает сериализацию в RKMIMETypeFormURLEncoded и RKMIMETypeJSON». Итак, как я могу использовать RKObjectManager для отправки xml?

+0

Хотелось бы также знать! – Carl

+0

моя проблема ровно –

0

Я решил это с помощью ASIHTTPRequest и XMLWriter. Несчастливо, но RestKit просто не поддерживает XML-сообщения из коробки.

Я использую RK для получения материала.

2

Вы можете использовать класс RKRequestSerialization, чтобы выполнить сериализацию xml для вас.

Вот фрагмент кода из одного из моих проектов:

#import <RestKit/RKRequestSerialization.h> 

...

[RKObjectManager sharedManager].acceptMIMEType = RKMIMETypeTextXML; 

NSString *loginData = @"<Login><UserId>test</UserId><Password>test</Password></Login>"; 

[[RKClient sharedClient] setValue:@"XYZ01" forHTTPHeaderField:@"ServiceId"]; 
[[RKClient sharedClient] post:@"/login" 
         params:[RKRequestSerialization serializationWithData:[loginDetails dataUsingEncoding:NSUTF8StringEncoding] MIMEType:RKMIMETypeTextXML] 
        delegate:self]; 

И вот дамп с помощью RKLogConfigureByName("RestKit/Network", RKLogLevelTrace)

2012-08-12 11:28:41.476 MyApp[730:707] T restkit.network:RKRequest.m:402 Prepared POST URLRequest '<NSMutableURLRequest https://someserver.com/MyApp/rest/service/request>'. HTTP Headers: { 
    Accept = "text/xml"; 
    "Content-Length" = 75; 
    "Content-Type" = "text/xml"; 
    ServiceId = XYZ01; 
}. HTTP Body: <Login><UserId>test</UserId><Password>test</Password></Login> 
+0

эй Имран, как увидеть отклик погоды, она хранится или нет? – Babul

+0

, чтобы увидеть ответ, вам нужно реализовать метод doLoadResponse для RKRequestDelegate. –

Смежные вопросы