2009-07-17 9 views

Antwort

105

POST URLRequest erstellen und verwenden Sie es webView

NSURL *url = [NSURL URLWithString: @"http://your_url.com"]; 
NSString *body = [NSString stringWithFormat: @"arg1=%@&arg2=%@", @"val1",@"val2"]; 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url]; 
[request setHTTPMethod: @"POST"]; 
[request setHTTPBody: [body dataUsingEncoding: NSUTF8StringEncoding]]; 
[webView loadRequest: request]; 
+0

Getestet und es funktioniert, danke! –

+0

funktioniert gut. Prost –

+7

Ich denke, die 'Anfrage' sollte am Ende veröffentlicht werden. :) – Kjuly

7

Die Antwort von oxigen arbeitete mit einer geringfügigen Änderung zu füllen. Bei Verwendung:

NSString *theURL = @"http://your_url.com/sub"; 
...//and later 
[request setURL:[NSURL URLWithString:theURL]]; 

Es funktionierte nicht, weder als Anfragen GET oder POST, wenn ein abschließenden Schrägstrich zum theURL hinzugefügt hat es funktioniert.

NSString *theURL = @"http://your_url.com/sub/"; 
+1

Das ist sehr merkwürdig ... Ich bin mir sicher, dass ich das im Mai 2012 getestet habe und es funktionierte ohne das /. Aber es braucht sicherlich das/jetzt, oder der POST wird auf mysteriöse Weise in ein GET umgewandelt. Vielen Dank! – emrys57

9

Für Swift

Unten ist ein Beispiel für POST Aufruf zur Webansicht mit Inhaltstyp x-www-form-urlencoded.

let url = NSURL (string: "https://www.google.com") 
let request = NSMutableURLRequest(URL: url!) 
request.HTTPMethod = "POST" 
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 

let post: String = "sourceId=44574fdsf01e-e4da-4e8c-a897-17722d00e1fe&sourceType=abc" 
let postData: NSData = post.dataUsingEncoding(NSASCIIStringEncoding, allowLossyConversion: true)! 

request.HTTPBody = postData 
webView.loadRequest(request) 

Sie müssen postData für andere Inhaltstypen ändern.

1

Dies ist @ 2ank3th für Swift 3 Antwort von ändern:

let url = NSURL (string: "https://www.google.com") 
let request = NSMutableURLRequest(url: url! as URL) 
request.httpMethod = "POST" 
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 

let post: String = "sourceId=44574fdsf01e-e4da-4e8c-a897-17722d00e1fe&sourceType=abc" 
let postData: NSData = post.data(using: String.Encoding.ascii, allowLossyConversion: true)! as NSData 

request.httpBody = postData as Data 
webView.loadRequest(request as URLRequest) 
0

für eine schnelle 4

zuerst seine besser zu nutzen diese Erweiterung:

extension URL{ 
    func withQueries(_ queries:[String:String]) -> URL? { 
     var components = URLComponents(url: self, resolvingAgainstBaseURL: true) 
     components?.queryItems = queries.flatMap{URLQueryItem(name: $0.0, value: $0.1)} 
     return components?.url 
    } 

    func justQueries(_ queries:[String:String]) -> URL? { 
     var components = URLComponents(url: self, resolvingAgainstBaseURL: true) 
     components?.queryItems = queries.flatMap{URLQueryItem(name: $0.0, value: $0.1)} 
     return components?.url 
    } 

} 

diese Erweiterung sehr nützlich ist handle Parameter und ihre Werte. Sekunde:

let urlstring = "https://yourdomain.com" 
     let url = URL(string: urlstring)! 
     let request = NSMutableURLRequest(url: url as URL) 
     request.httpMethod = "POST" 
     request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 
     let query :[String:String] = ["username":"admin","password":"111"] 
     let baseurl = URL(string:urlstring)! 
     let postString = (baseurl.withQueries(query)!).query 
     request.httpBody = postString?.data(using: .utf8) 
     webview.load(request as URLRequest)