반응형
POST 매개 변수를 사용하여 UIWebView를 통해 웹 페이지로드
POST 매개 변수로 UIWebView를 통해 페이지를로드 할 수 있습니까? 매개 변수가 포함 된 임베디드 양식을로드하고 자바 스크립트로 채우고 강제로 제출할 수 있지만 더 깨끗하고 빠른 방법이 있습니까?
감사!
POST URLRequest를 생성하고이를 사용하여 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];
다음은 콘텐츠 유형이 x-www-form-urlencoded 인 웹보기에 대한 POST 호출의 예입니다.
다른 콘텐츠 유형에 대해서는 postData를 변경해야합니다.
Swift 3의 경우
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)
Swift 4의 경우
let url = URL (string: "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: Data = post.data(using: String.Encoding.ascii, allowLossyConversion: true)!
request.httpBody = postData
webView.load(request as URLRequest)
oxigen 의 대답은 약간의 변화로 작동했습니다. 사용할 때:
NSString *theURL = @"http://your_url.com/sub";
...//and later
[request setURL:[NSURL URLWithString:theURL]];
작동하는 URL에 슬래시를 추가하면 GET 또는 POST 요청으로 작동하지 않았습니다 .
NSString *theURL = @"http://your_url.com/sub/";
이것은 Swift 3에 대한 @ 2ank3th의 수정 답변입니다.
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)
신속한 4
먼저이 확장을 사용하는 것이 좋습니다.
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
}
}
this extension is very useful to handle parameters and its values. second:
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)
ReferenceURL : https://stackoverflow.com/questions/1142562/loading-a-webpage-through-uiwebview-with-post-parameters
반응형
'programing' 카테고리의 다른 글
연도를 4 자리에서 2 자리로 변환하고 다시 C #으로 변환 (0) | 2021.01.17 |
---|---|
Junit 4가 기본 테스트 클래스를 무시하도록하는 방법은 무엇입니까? (0) | 2021.01.17 |
Python Imaging Library에서 크기가 조정 된 이미지의 품질을 조정하는 방법은 무엇입니까? (0) | 2021.01.17 |
복사하지 않고 C ++ std :: vector와 C 배열 간 변환 (0) | 2021.01.17 |
C # 캐스트 전체 어레이? (0) | 2021.01.17 |