php - NSHTTPURLRequest can't read statusCode -
just doing normal http post nsmutableurlrequest , sendasynchronousrequest. nshttpurlresponse object pass in has statuscode of 0 after call. error:
sendasynchronousrequest error = error domain=nsurlerrordomain code=-1005 "the network connection lost." userinfo=0xb374a00 {nserrorfailingurlstringkey=
http://54.221.224.251, nserrorfailingurlkey=http://54.221.224.251, nslocalizeddescription=the network connection lost., nsunderlyingerror=0xb587990 "the network connection lost."} 2013-09-04 16:46:19.146 panic[2032:5907] statuscode: 0
but no status code. why? status code server sending 150.
when post different data server, , don't ask return statuscode, connection goes smoothly , expected.
app code:
[nsurlconnection sendasynchronousrequest:request queue:queue completionhandler:^(nsurlresponse *response, nsdata *data, nserror *error) { if (error) nslog(@"sendasynchronousrequest error = %@", error); nshttpurlresponse *httpresponse = (nshttpurlresponse *)response; int code = [httpresponse statuscode]; nsstring *coder = [nsstring stringwithformat:@"%d",code]; nslog(@"%@",coder); if (data) { nslog(@"this data: %@",data); nshttpurlresponse *httpresponse = (nshttpurlresponse *)response; int code = [httpresponse statuscode]; nsstring *coder = [nsstring stringwithformat:@"%d",code]; nslog(@"%@",coder); } }]; php code:
index.php
<?php require_once 'includes/main.php'; class dumb { function dumber(){ /*-------------------------------------------------- handle visits login token. if valid, log person in. ---------------------------------------------------*/ if(isset($_get['tkn'])){ // valid login token? $user = user::findbytoken($_get['tkn']); if($user){ // yes! login user , redirect protected page. $user->login(); redirect('panic://success'); } // invalid token. redirect login form. redirect('panic://fail'); } /*-------------------------------------------------- handle logging out of system. logout link in protected.php leads here. ---------------------------------------------------*/ if(isset($_get['logout'])){ $user = new user(); if($user->loggedin()){ $user->logout(); } redirect('index.php'); } /*-------------------------------------------------- don't show login page logged-in users. ---------------------------------------------------*/ $user = new user(); if($user->loggedin()){ redirect('protected.php'); } /*-------------------------------------------------- handle submitting login form via ajax ---------------------------------------------------*/ if (isset($_post["name"]) && isset($_post["email"]) && isset($_post["phash"])){ rate_limit($_server['remote_addr']); rate_limit_tick($_server['remote_addr'], $_post['email']); $message = ''; $name = $_post["name"]; $email = $_post["email"]; $phash = $_post["phash"]; $subject = 'your login link'; if(!user::exists($email)){ $subject = "thank registering!"; $message = "thank registering @ our site!\n\n"; // attempt login or register person $user = user::loginorregister($email, $name, $phash); $message.= "you can login url:\n"; $message.= get_page_url()."?tkn=".$user->generatetoken()."\n\n"; $message.= "the link going expire automatically after 10 minutes."; $result = send_email($fromemail, $_post['email'], $subject, $message); if(!$result){ sendresponse(403, 'error sending email'); return false; } } else{ sendresponse(150, 'account created.'); return false; } } else if(isset($_post["email"]) && isset($_post["phash"])){ rate_limit($_server['remote_addr']); rate_limit_tick($_server['remote_addr'], $_post['email']); $message = ''; $name = ''; $email = $_post["email"]; $phash = $_post["phash"]; $subject = 'your login link'; if(!user::exists($email)){ sendresponse(155, 'account not yet created.'); return false; } else{ // attempt login or register person $user = user::loginorregister($email, $name, $phash); $message.= "you can login url:\n"; $message.= get_page_url()."?tkn=".$user->generatetoken()."\n\n"; $message.= "the link going expire automatically after 10 minutes."; $result = send_email($fromemail, $_post['email'], $subject, $message); if(!$result){ sendresponse(403, 'error sending email'); return false; } } } /*-------------------------------------------------- output login form ---------------------------------------------------*/ } } $api = new dumb; $api->dumber(); ?> sendresponse function
function sendresponse($status, $body = '', $content_type = 'text/html') { $status_header = 'http/1.1 ' . $status . ' ' . 'error'; header($status_header); header('content-type: ' . $content_type); echo $body; }
1xx status codes special (see http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-23.html#status.1xx); also, it's not idea make new status codes.
Comments
Post a Comment