ios - AFNetworking POST Request failed Code=-1011 (400) -
i have webservice , can make post calls via postman utility. on postman settings
i using afnetworking. code:
afhttprequestoperationmanager *manager = [afhttprequestoperationmanager manager]; nsdictionary *parameters = @{@"offset": @"1", @"csrf-token": @"63b164ea557b4aba694f81520c71972fa43a9772"}; manager.requestserializer = [afjsonrequestserializer serializer]; [manager post:@"http://simple.com/" parameters:parameters success:^(afhttprequestoperation *operation, id responseobject) { nslog(@"json: %@", responseobject); } failure:^(afhttprequestoperation *operation, nserror *error) { nslog(@"error: %@", error); }];
but error:
error: error domain=com.alamofire.error.serialization.response code=-1011 "request failed: bad request (400)" userinfo=0x7a6c5240 {com.alamofire.serialization.response.error.response=<nshttpurlresponse: 0x7a6b5360> { url: http://simple.com/ } { status code: 400, headers { "cache-control" = "no-store, no-cache, must-revalidate, post-check=0, pre-check=0, private, must-revalidate"; connection = "keep-alive"; "content-encoding" = gzip; "content-type" = "text/html; charset=utf-8"; date = "sun, 31 may 2015 15:40:26 gmt"; expires = "thu, 19 nov 1981 08:52:00 gmt"; pragma = "no-cache"; server = "nginx/1.6.2"; "set-cookie" = "csrf-token=5589461e87b28a538953ccac4168bf1f98b20b1ds%3a40%3a%22f52bda5262260a3ee0a10efcf48a6a49c11e4103%22%3b; path=/, phpsessid=803db60816b9f8203fb8feca01c130b6; path=/"; "transfer-encoding" = identity; vary = "accept-encoding,user-agent"; "x-powered-by" = "php/5.5.17";
this without afnetworking:
nsstring *post = @"offset=1&csrf-token=63b164ea557b4aba694f81520c71972fa43a9772"; nsdata *postdata = [post datausingencoding:nsutf8stringencoding allowlossyconversion:yes]; nsstring *postlength = [nsstring stringwithformat:@"%d", [postdata length]]; nsmutableurlrequest *request = [[nsmutableurlrequest alloc] init]; [request seturl:[nsurl urlwithstring:@"http://simple.com/"]]; [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]; nsurlconnection *connection = [[nsurlconnection alloc] initwithrequest:request delegate:self]; nshttpurlresponse *response = nil; nserror *error = nil; nsdata *respdata = [nsurlconnection sendsynchronousrequest:request returningresponse:&response error:&error]; nslog(@"~~~~~ status code: %d", [response statuscode]);
and again error: 400
please solve problem
i solved problem.
the fact server keeps session specific csrf token. mistake used same token, in browser, , mobile device. therefore, server , did not give details getting wrong post request.
my solution: first server csrf token, , further post
queries use resulting token. in response post request status 200 , data needed.
true afnetworking
not in problem, had use standardnsurlconnection
(i put code in question). maybe in future come in handy!
thanks all! luck all!
Comments
Post a Comment