2014-01-28 43 views
0

這可能是一個難以解釋的問題。我有一個UIWebView,它使Web服務請求和XML返回。UIWebView將XML響應顯示爲計劃文本

<ArrayOfSomething xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://Mobileapps.com/"> 
<tokenMappings> 
<UpdateStatus>0</UpdateStatus> 
<TokenNo>0</TokenNo> 
</tokenMappings> 
</ArrayOfSomething> 

當它收到上述XML時,它會在瀏覽器中顯示「0 0」。無論如何阻止它顯示響應?我必須提出上述請求,但我只需要提取UpdateStatus和TokenNo而不顯示響應。

  • 這是一種混合型應用程序運行
+1

如果您不需要顯示響應,爲什麼不使用http請求(而不是UI)而不是UIWebView(它是UI元素)? –

+0

這是一個在UIWebView中運行的混合應用程序。 –

+1

所以用javascript做出請求並處理結果 – Wain

回答

1

好吧,你希望你的應用程序中的一個UIWebView *內,即在一個UIWebView中運行,啓動本地URL請求?那是對的嗎 ?

這可行,但你應該考慮在JavaScript中使用請求。

試試這個:

我想你已經實施的UIWebViewDelegate協議和分配委託給當前視圖控制器。

現在實行

- (BOOL) webView:(UIWebView *)webView2 shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
if ([[[request URL] absoluteString] hasPrefix:@"yourPrefix:"]) { 
    NSMutableURLRequest *request = [NSMutableURLRequest new]; 
    [request setURL:[NSURL URLWithString:@"http://yourserver/xml"]]; 
    [request setHTTPMethod:@"GET"]; 

    [request setValue:@"YOUR NEEDED CONTENT TYPE" forHTTPHeaderField:@"Content-Type"]; 


    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
     NSLog(@"response : %@", response.description); 
     NSLog(@"response : %@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); 
    }]; 
    } 
    return YES; 
} 

現在在你的JavaScript代碼,你要開始這樣做了要求:

window.location.href = "yourPrefix://"; 

這將啓動一個重定向到URL和本地方法被稱爲開始您的請求。

+0

謝謝!但我仍然需要提出請求並從響應中提取數據,但不會在UIWebView中顯示響應的輸出。目前,當響應出現時,我將它解壓縮,然後在UIWebView中加載一個不同的網頁。但是,在1-2秒內,您可以看到UIWebView中顯示的響應,這是我不想要的。 –

+1

你可以發佈一些截圖或代碼段? – matthisb