gpt4 book ai didi

iphone - 使用 sharedApplication openURL 方法在 Safari 中使用 POST 方法打开托管的 Url

转载 作者:可可西里 更新时间:2023-11-01 03:09:08 25 4
gpt4 key购买 nike

我有一种情况,我正在使用 POST 方法在模拟器的 safari 浏览器中托管 URL。在模拟器中启动我的 iOS 应用程序后,该网页在 safari 中打开。为了启动 safari,我使用了 [[UIApplication sharedApplication] openURL: ...

post方法如下:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://***some client url***.jsp"]];

NSString *post = [NSString stringWithFormat:@"username=%@&password=%@", userName, password];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"%d", [postData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];`


NSURLConnection* _urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[_urlConnection start];

这段代码在使用 UIWebView 时工作正常。但是我想使用这个“请求”启动 Safari,它附加了来自 POST 方法的用户名和密码数据。

要启动 Safari,我必须调用此代码:

[[UIApplication sharedApplication] openURL:request];

但这显然会引发警告,因为“request”是 NSMutableURLRequest 类型。“语义问题:不兼容的指针类型将‘NSMutableURLRequest *’发送到‘NSURL *’类型的参数”...

我什至不能使用 [[UIApplication sharedApplication] openURL:request.URL]; 因为这会给我一个没有附加用户名和密码的 URL(没有 POST 方法)。

我想知道如何类型转换/转换此请求 (NSMutableURLRequest) 以便我可以将其容纳在 [[UIApplication sharedApplication] openURL...

希望我对我的问题很清楚。任何帮助将不胜感激。提前致谢!!

最佳答案

推荐的方法是在您的应用程序中使用 UIWebView 并使用 NSURLRequestNSURLConnection 创建发布请求。创建发布请求并触发请求非常容易。由于您已经解决了这个问题并且您不想使用这种方法,唯一的选择是创建一个临时 html 文件作为 mentioned here 。您可以尝试使用他们正在遵循的方法,并检查它是否适用于您的情况。

根据该链接,您必须编写一个临时 html 文件。此 html 文件将包含一个可立即发送 POST 的 onLoad() javascript,以及一个供未启用 javascript 的用户使用的按钮。您可以从该文件创建 NSURL 对象作为 [NSURL fileURLWithPath:path];

另一个解决方案是创建一个 one time key从网络服务器并通过 HTTPS 请求将其传递给 safari as mentioned here .

关于iphone - 使用 sharedApplication openURL 方法在 Safari 中使用 POST 方法打开托管的 Url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13196192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com