在 NSURLRequest 上编码 '+' 字符
encoding '+' character on a NSURLRequest
我正在加载带有外部 url 和 post 数据的 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];
}
似乎将“+”字符替换为其十六进制值
NSString *body = [body2 stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
我正在加载带有外部 url 和 post 数据的 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];
}
似乎将“+”字符替换为其十六进制值
NSString *body = [body2 stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];