0

这是一个棘手的问题。

当我按下按钮时,它应该连接到一个 URL,这将启动我的 wcf 服务的该方法。但是,当我调试时,我注意到连接失败(就像没有调用任何委托方法等等)。我知道我的 WCF 服务可以正常工作,因为当我直接在 safari 中键入 URL 时,它可以正常工作并执行该方法。这是我的代码:

- (IBAction)RBCButtonPressed:(id)sender {

//[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://10.1.51.55:8732/windows2/OnApplication?appName=RoyalBank.BankOfTheFuture.Surface.exe&directory=C:\\Program Files (x86)\\Bank of the Future"]];
NSString *urlString = @"http://10.1.51.55:8732/windows2/OnApplication?appName=RoyalBank.BankOfTheFuture.Surface.exe&directory=C:\\Program Files (x86)\\Bank of the Future";
NSLog(urlString);
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url ];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection release];
[request release];
if(connection)
    self.valueReturned = [[NSData data] retain];
else
    NSLog(@"data failed");

NSLog(@"connection failed");
[captureView addSubview:loader];

}

我不包括委托方法,因为它们无论如何都不会被调用。它打印“连接失败”。

更新:当我使用只接受一个参数的方法时,它在浏览器和设备上都可以正常工作(连接成功并且调用了委托方法)。但是,当有两个参数时,它只能在浏览器中正常工作。连接总是失败。可能性 - 反斜杠的使用会以某种方式混淆它(?)。

这是紧急的,任何帮助将不胜感激。

编辑:它总是会打印我意识到的“连接失败”,但我知道连接失败是因为 1)未调用委托方法和 2)应用程序未打开,如果调用该方法则会打开。

4

2 回答 2

1

它失败了,因为您在创建连接后立即释放连接。如果您不使用 ARC,您可以使用 autorelease 创建它,或者只使用 ARC 并忘记发布。

于 2012-08-07T22:20:01.513 回答
1

如果您在调试器中检查您的 NSURL 对象,您会在尝试初始化它后立即发现它为 nil。这是因为它的格式不正确。首先尝试对其进行URL 编码

请注意您粘贴到 Safari 中的 URL 更改为:

http://10.1.51.55:8732/windows2/OnApplication?appName=RoyalBank.BankOfTheFuture.Surface.exe&directory=C:%5C%5CProgram%20Files%20(x86)%5C%5CBank%20of%20the%20Future

查看所有 %20s 和 %5Cs 等?这是因为 Safari URL 在发送请求之前对其进行了编码。你也必须这样做。

最好的祝福。

于 2012-08-07T23:39:53.560 回答