2012-11-24 86 views
-3

我試圖以鍵值對的形式讀取jSON響應。ASIFormDataRequest中的鍵值對請求沒有得到響應

當我通過瀏覽器我正在通過jSON對象所需要的狀態代碼/響應手動擊中URL

{"status":"0","responseCode":"1021","response":{"message":"Please check your Settings ","data":"2012-11-24, 7:28 am"}}

當我試圖做到這一點時,未獲得同樣的預期響應通過我app.My代碼,當我通過應用程序發送數據

[dictionnary setObject:@"admin" forKey:@"username"]; 
[dictionnary setObject:@"123123" forKey:@"password"]; 

NSError *error = nil; 

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionnary 
                options:kNilOptions 
                error:&error]; 

NSString *urlString = @"MY CALL URL"; 

NSURL *url = [NSURL URLWithString:urlString]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[request setHTTPMethod:@"POST"]; 

[request setHTTPBody:jsonData]; 
NSURLResponse *response = NULL; 
NSError *requestError = NULL; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&requestError]; 
NSLog(@"response is obtained"); 

NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] ; 
NSLog(@"%@", responseString); 

迴應我通過代碼

越來越
<!DOCTYPE html PUBLIC 
    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<title>PHP notice</title> 

<style type="text/css"> 
/*<![CDATA[*/ 
    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;margin:0;padding:0;} 
    body{line-height:1;} 
    ol,ul{list-style:none;} 
    blockquote,q{quotes:none;} 
    blockquote:before,blockquote:after,q:before,q:after{content:none;} 
    :focus{outline:0;} 
    ins{text-decoration:none;} 
    del{text-decoration:line-through;} 
    table{border-collapse:collapse;border-spacing:0;} 

    body { 
     font: normal 9pt "Verdana"; 
     color: #000; 
     background: #fff; 
    } 

    h1 { 
     font: normal 18pt "Verdana"; 
     color: #f00; 
     margin-bottom: .5em; 
    } 

    h2 { 
     font: normal 14pt "Verdana"; 
     color: #800000; 
     margin-bottom: .5em; 
    } 

    h3 { 
     font: bold 11pt "Verdana"; 
    } 

    pre { 
     font: normal 11pt Menlo, Consolas, "Lucida Console", Monospace; 
    } 

    pre span.error { 
     display: block; 
     background: #fce3e3; 
    } 

    pre span.ln { 
     color: #999; 
     padding-right: 0.5em; 
     border-right: 1px solid #ccc; 
    } 

    pre span.error-ln { 
     font-weight: bold; 
    } 

    .container { 
     margin: 1em 4em; 
    } 

    .version { 
     color: gray; 
     font-size: 8pt; 
     border-top: 1px solid #aaa; 
     padding-top: 1em; 
     margin-bottom: 1em; 
    } 

    .message { 
     color: #000; 
     padding: 1em; 
     font-size: 11pt; 
     background: #f3f3f3; 
     -webkit-border-radius: 10px; 
     -moz-border-radius: 10px; 
     border-radius: 10px; 
     margin-bottom: 1em; 
     line-height: 160%; 
    } 

    .source { 
     margin-bottom: 1em; 
    } 

    .code pre { 
     background-color: #ffe; 
     margin: 0.5em 0; 
     padding: 0.5em; 
     line-height: 125%; 
     border: 1px solid #eee; 
    } 

    .source .file { 
     margin-bottom: 1em; 
     font-weight: bold; 
    } 

    .traces { 
     margin: 2em 0; 
    } 

    .trace { 
     margin: 0.5em 0; 
     padding: 0.5em; 
    } 

    .trace.app { 
     border: 1px dashed #c00; 
    } 

    .trace .number { 
     text-align: right; 
     width: 2em; 
     padding: 0.5em; 
    } 

    .trace .content { 
     padding: 0.5em; 
    } 

    .trace .plus, 
    .trace .minus { 
     display:inline; 
     vertical-align:middle; 
     text-align:center; 
     border:1px solid #000; 
     color:#000; 
     font-size:10px; 
     line-height:10px; 
     margin:0; 
     padding:0 1px; 
     width:10px; 
     height:10px; 
    } 

    .trace.collapsed .minus, 
    .trace.expanded .plus, 
    .trace.collapsed pre { 
     display: none; 
    } 

    .trace-file { 
     cursor: pointer; 
     padding: 0.2em; 
    } 

    .trace-file:hover { 
     background: #f0ffff; 
    } 
    /*]]>*/ 
    </style> 
    </head> 

    <body> 
    <div class="container"> 
     <h1>PHP notice</h1> 

     <p class="message"> 
      Undefined index: signature </p> 

     <div class="source"> 
      <p class="file">/var/www/protected/controllers/Authenticate.php(955)</p> 
      <div class="code"><pre><span class="ln">943</span> 

      <td class="number"> 
       #7   </td> 
      <td class="content"> 
       <div class="trace-file"> 
              <div class="plus">+</div> 
         <div class="minus">–</div> 
             &nbsp;/var/yii-1.1.10.r3566/framework/base/CApplication.php(162): <strong>CWebApplication</strong>-><strong>processRequest</strong>()    </div> 

       <div class="code"><pre><span class="ln">157</span>  */ 
<span class="ln">158</span>  public function run() 
<span class="ln">159</span>  { 
<span class="ln">160</span>   if($this-&gt;hasEventHandler(&#039;onBeginRequest&#039;)) 
<span class="ln">161</span>    $this-&gt;onBeginRequest(new CEvent($this)); 
<span class="error"><span class="ln error-ln">162</span>   $this-&gt;processRequest(); 
</span><span class="ln">163</span>   if($this-&gt;hasEventHandler(&#039;onEndRequest&#039;)) 
<span class="ln">164</span>    $this-&gt;onEndRequest(new CEvent($this)); 
<span class="ln">165</span>  } 
<span class="ln">166</span> 
<span class="ln">167</span>  /** 
</pre></div>   </td> 
     </tr> 
         <tr class="trace app expanded"> 
      <td class="number"> 
       #8   </td> 
      <td class="content"> 
       <div class="trace-file"> 
              <div class="plus">+</div> 
         <div class="minus">–</div> 
             &nbsp;/var/www/index.php(13): <strong>CApplication</strong>-><strong>run</strong>()    </div> 

       <div class="code"><pre><span class="ln">08</span> defined(&#039;YII_DEBUG&#039;) or define(&#039;YII_DEBUG&#039;,true); 
<span class="ln">09</span> // specify how many levels of call stack should be shown in each log message 
<span class="ln">10</span> defined(&#039;YII_TRACE_LEVEL&#039;) or define(&#039;YII_TRACE_LEVEL&#039;,3); 
<span class="ln">11</span> 
<span class="ln">12</span> require_once($yii); 
<span class="error"><span class="ln error-ln">13</span> Yii::createWebApplication($config)-&gt;run(); 
</span></pre></div>   </td> 
     </tr> 
       </table> 
    </div> 

    <div class="version"> 
     2012-11-24 07:38:18 Apache/2.2.22 (Ubuntu) <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.10 </div> 
</div> 

<script type="text/javascript"> 
/*<![CDATA[*/ 
var traceReg = new RegExp("(^|\\s)trace-file(\\s|$)"); 
var collapsedReg = new RegExp("(^|\\s)collapsed(\\s|$)"); 

var e = document.getElementsByTagName("div"); 
for(var j=0,len=e.length;j<len;j++){ 
    if(traceReg.test(e[j].className)){ 
     e[j].onclick = function(){ 
      var trace = this.parentNode.parentNode; 
      if(collapsedReg.test(trace.className)) 
       trace.className = trace.className.replace("collapsed", "expanded"); 
      else 
       trace.className = trace.className.replace("expanded", "collapsed"); 
     } 
    } 
} 
/*]]>*/ 
</script> 

</body> 
</html> 
+0

也許這個請求從未被髮送過? (值是否或者沒有*與「無應答/確認」問題有關*) – 2012-11-24 04:43:15

+0

API發送了什麼信息被髮送。 API只接受來自用戶的輸入,不做驗證或類似的。 – onkar

+0

價值觀或缺乏價值觀是否與「無迴應/承認」問題有關?也就是說,我可以這樣問這個問題:「爲什麼ASIFormDataRequest不能得到響應?」或者在某些情況下,只有在指定後期值時「不能工作」? *爲什麼*如果*目前沒有收到*,JSON會被提及? – 2012-11-24 04:55:09

回答

1
- (void)requestFinished:(ASIHTTPRequest *)request1 
{ 
    // Use when fetching text datatype = agency; type = court; 

    NSString *responseString = [request1 responseString]; 
} 
- (void)requestFailed:(ASIHTTPRequest *)request1 
{ 
    NSError *error = [request1 error]; 
    NSLog(@"%@",error); 
} 

這些ASIHttp的委託方法時,響應會method.it將被調用。

快樂編碼!

+0

[request setHTTPMethod:@「POST」];這是正確的方法嗎? X代碼在這條線上困擾我 – onkar

0

請注意ASIHTTPRequestno longer working所以你可以使用AFNetworking

AFNetworking是一個愉快的網絡庫iOSMac OS X。它建立在NSURLConnection,NSOperation和其他熟悉的Foundation technologies之上。它有一個modular architecture,它具有精心設計的功能豐富的API,使用起來很愉快。

找到SDK here

,你也可以試試下面的代碼可以幫助你。

NSString *username = emailField.text; 
     NSString *password = passwordField.text; 
     NSMutableDictionary *dictionnary = [NSMutableDictionary dictionary]; 
     [dictionnary setObject:@"admin" forKey:@"username"]; 
     [dictionnary setObject:@"123456" forKey:@"password"]; 

     NSError *error = nil; 
     NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionnary 
                  options:kNilOptions 
                  error:&error]; 

     NSString *urlString = @"Sample URL"; 

     NSURL *url = [NSURL URLWithString:urlString]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
     [request setHTTPMethod:@"POST"]; 

     [request setHTTPBody:jsonData]; 
     NSURLResponse *response = NULL; 
     NSError *requestError = NULL; 
     NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&requestError]; 
     NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] ; 
     NSLog(@"%@", responseString); 

,如果它是一個GET請求,那麼,你可以嘗試鏈接:/index.php/api/transaction/model/transactionsuccess?username=admin &密碼= 1212 3

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"/index.php/api/transaction/model/transactionsuccess?username=adm‌​in&password=1212‌​3"]]; 

// Perform request and get JSON as a NSData object 


NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
NSLog(@"response=%@",response); 

並使用此代碼。

+0

上面的代碼不起作用。我沒有得到所需的jSON響應。這裏要做的任何修改 – onkar

+0

你會得到什麼迴應? –

+0

<!DOCTYPE HTML PUBLIC \t 「 - // W3C // DTD XHTML 1.0過渡// EN」 \t 「http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd」> PHP通知 <風格類型=」 文/ CSS「> /* <![CDATA [*/ **像這樣** – onkar