在NSURLRequest上编码'+'字符

时间:2016-03-11 11:16:52

标签: ios objective-c character-encoding url-encoding

我正在使用外部网址加载webView并发布数据。

一切正常,除非数据包含'+'字符,否则失败。 我试图以不同的方式对数据进行编码,但我无法使其工作。 如何正确编码加号?

-(void) cargarWebViewTPVRedys:(TPVRedsys*) redsys{

    NSURL *url = [NSURL URLWithString: @"https://sis-t.redsys.es:25443/sis/realizarPago"]; // PRUEBAS
    // NSURL *url = [NSURL URLWithString: @"https://sis.redsys.es/sis/realizarPago"];     // REAL
    NSString *body = [NSString stringWithFormat: @"DS_SIGNATURE=%@&DS_MERCHANTPARAMETERS=%@&DS_SIGNATUREVERSION=%@",redsys.Ds_Signature,redsys.Ds_MerchantParameters,redsys.Ds_SignatureVersion];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url];
    [request setHTTPMethod: @"POST"];
    //[request setHTTPBody: [body dataUsingEncoding: NSUnicodeStringEncoding]];
    //[request setHTTPBody: [body dataUsingEncoding: NSASCIIStringEncoding]];
    [request setHTTPBody: [body dataUsingEncoding: NSUTF8StringEncoding allowLossyConversion:false]];
    NSLog(redsys.Ds_Signature);
    NSLog(redsys.Ds_MerchantParameters);
    NSLog(redsys.Ds_SignatureVersion);

    [self.webView loadRequest:request];
}

1 个答案:

答案 0 :(得分:0)

似乎取代了' +'其十六进制值的字符

NSString *body = [body2 stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];