ASIFromDataRequest请求得到的json乱码如何解决? iosjsonxcodeiphone 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 request setresponstring:nsutf8string]; 我在请求里加入你这这句代码后 返回值直接变成 null了 那你不用上面那句话吧。你试试把乱码的字符付给一个label呢,,看label能不能正常显示! 应该不是,我试过把url改成 appstore的,返回的json是正常的。 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; NSURL *url=[NSURL URLWithString:@"***********"]; versionRequest = [ASIFormDataRequest requestWithURL:url]; [versionRequest setDelegate:self]; [versionRequest setTimeOutSeconds:150]; [versionRequest addRequestHeader:@"Content-Type" value:@"application/json"]; [versionRequest startSynchronous]; NSString *jsonResponseString = [versionRequest responseString]; 上面的代码出来的jsonResponse就乱码了。 奇怪的是,这个jsonResponse字符串内容竟然是所有HTML的内容。(标签啊什么的都有。) [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; NSURL *url=[NSURL URLWithString:@"***********"]; versionRequest = [ASIFormDataRequest requestWithURL:url]; [versionRequest setDelegate:self]; [versionRequest setTimeOutSeconds:150]; [versionRequest addRequestHeader:@"Content-Type" value:@"application/json"]; [versionRequest startSynchronous]; NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; NSURL *url=[NSURL URLWithString:@"***********"]; versionRequest = [ASIFormDataRequest requestWithURL:url]; [versionRequest setDelegate:self]; [versionRequest setTimeOutSeconds:150]; [versionRequest addRequestHeader:@"Content-Type" value:@"application/json"]; [versionRequest startSynchronous]; NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest 我试过了,情况有所好转,之前是 返回什么iis 405之类的乱码,改成asihttprequest后返回的内容只是 :{"version":"1.0.8","update":"æ´æ°å 容","updateurl":"********","apptitle":"å¹³é³çµå移å¨åå ¬ç³»ç»"} 还是很奇怪,最前面怎么还多余了几个字符。中文乱码还是没解决 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; NSURL *url=[NSURL URLWithString:@"***********"]; versionRequest = [ASIFormDataRequest requestWithURL:url]; [versionRequest setDelegate:self]; [versionRequest setTimeOutSeconds:150]; [versionRequest addRequestHeader:@"Content-Type" value:@"application/json"]; [versionRequest startSynchronous]; NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest 被我解决了,谢谢你,对我帮助很大。 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; NSURL *url=[NSURL URLWithString:@"***********"]; versionRequest = [ASIFormDataRequest requestWithURL:url]; [versionRequest setDelegate:self]; [versionRequest setTimeOutSeconds:150]; [versionRequest addRequestHeader:@"Content-Type" value:@"application/json"]; [versionRequest startSynchronous]; NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest 我试过了,情况有所好转,之前是 返回什么iis 405之类的乱码,改成asihttprequest后返回的内容只是 :{"version":"1.0.8","update":"æ´æ°å 容","updateurl":"********","apptitle":"å¹³é³çµå移å¨åå ¬ç³»ç»"} 还是很奇怪,最前面怎么还多余了几个字符。中文乱码还是没解决返回代码405是因为服务器不允许静态文件响应POST请求吧,所以你换了ASIHTTPRequest之后能正常获得数据。返回乱码这个编码问题,你先转成NSData试下,不一定有用。 NSData *jsondata = [request responseData]; NSString *jsonString = [[NSString alloc] initWithBytes:[jsondata bytes] length:[jsondata length] encoding:NSUTF8StringEncoding]; [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; NSURL *url=[NSURL URLWithString:@"***********"]; versionRequest = [ASIFormDataRequest requestWithURL:url]; [versionRequest setDelegate:self]; [versionRequest setTimeOutSeconds:150]; [versionRequest addRequestHeader:@"Content-Type" value:@"application/json"]; [versionRequest startSynchronous]; NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest 我试过了,情况有所好转,之前是 返回什么iis 405之类的乱码,改成asihttprequest后返回的内容只是 :{"version":"1.0.8","update":"æ´æ°å 容","updateurl":"********","apptitle":"å¹³é³çµå移å¨åå ¬ç³»ç»"} 还是很奇怪,最前面怎么还多余了几个字符。中文乱码还是没解决返回代码405是因为服务器不允许静态文件响应POST请求吧,所以你换了ASIHTTPRequest之后能正常获得数据。返回乱码这个编码问题,你先转成NSData试下,不一定有用。 NSData *jsondata = [request responseData]; NSString *jsonString = [[NSString alloc] initWithBytes:[jsondata bytes] length:[jsondata length] encoding:NSUTF8StringEncoding];asiformdatarequest 是asihttprequest的子类,asiformdatarequest是post请求,那asihttprequest是什么? [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; NSURL *url=[NSURL URLWithString:@"***********"]; versionRequest = [ASIFormDataRequest requestWithURL:url]; [versionRequest setDelegate:self]; [versionRequest setTimeOutSeconds:150]; [versionRequest addRequestHeader:@"Content-Type" value:@"application/json"]; [versionRequest startSynchronous]; NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest 我试过了,情况有所好转,之前是 返回什么iis 405之类的乱码,改成asihttprequest后返回的内容只是 :{"version":"1.0.8","update":"æ´æ°å 容","updateurl":"********","apptitle":"å¹³é³çµå移å¨åå ¬ç³»ç»"} 还是很奇怪,最前面怎么还多余了几个字符。中文乱码还是没解决返回代码405是因为服务器不允许静态文件响应POST请求吧,所以你换了ASIHTTPRequest之后能正常获得数据。返回乱码这个编码问题,你先转成NSData试下,不一定有用。 NSData *jsondata = [request responseData]; NSString *jsonString = [[NSString alloc] initWithBytes:[jsondata bytes] length:[jsondata length] encoding:NSUTF8StringEncoding];asiformdatarequest 是asihttprequest的子类,asiformdatarequest是post请求,那asihttprequest是什么?是这样的,ASIFormDataRequest可以发送类似与HTML表单数据,也可以上传数据,默认采用POST请求方法,ASIHTTPRequest默认GET,这两段代码你可以分别在他们对应的.m文件找到 //在 ASIFormDataRequest.m里+ (id)requestWithURL:(NSURL *)newURL{ return [[[self alloc] initWithURL:newURL] autorelease];}- (id)initWithURL:(NSURL *)newURL{ self = [super initWithURL:newURL]; [self setPostFormat:ASIURLEncodedPostFormat]; [self setStringEncoding:NSUTF8StringEncoding]; [self setRequestMethod:@"POST"]; return self;}//在ASIHTTPRequest.m里// HTTP method to use (eg: GET / POST / PUT / DELETE / HEAD etc). Defaults to GET NSString *requestMethod;,但是它们也可以其它的HTTP请求方法,都可以进行异步或同步请求。比如你之前的代码,使用ASIFormDataRequest,但是加上下面的设置GET请求,也是可以获取的,你可以试下, ASIFormDataRequest *request =....;[request setRequestMethod:@"GET"]; NSString *resultString = [[NSString alloc] initWithBytes:[jsondata bytes] length:[jsondata length] encoding:NSUTF8StringEncoding]; 格式化一下 就ok了 楼主,请问你怎么解决返回json字符串前面返回的乱码 我是是这样 [{"Success":"YES"}],这个你是怎么解决的,求解,在线等。 NSString *resultString = [[[NSString alloc] initWithBytes:[[request responseData] bytes] length:[[request responseData] length] encoding:NSUTF8StringEncoding] autorelease];通过14楼的朋友方法,返回正常,可是这为什么呢,代码贴出了,给大家,大家指正: __block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:URL]; FLog(@"allKey=%@",[paramDic allKeys]); for (NSString *key in [paramDic allKeys]) { [request setPostValue:[[paramDic objectForKey:key] lowercaseString] forKey:key]; } [request setCompletionBlock:^{ //正确 NSString *resultString = [[[NSString alloc] initWithBytes:[[request responseData] bytes] length:[[request responseData] length] encoding:NSUTF8StringEncoding] autorelease]; [self.userDataDelegate addUserDataSuccess:[FJsonDataParserObject parseAddUserData:resultString]]; NSLog(@"succ:%@",resultString); //返回 [{"Success":"YES"}] /* 下面返回 [{"Success":"YES"}] NSString *response = [request responseString]; NSLog(@"r=%@",response); [self.userDataDelegate addUserDataSuccess:[FJsonDataParserObject parseAddUserData:response]]; */ }];为什么会这样,坑爹的问题! iOS解析XML文档问题 safari加载后聚焦的问题 通过IP访问控制主机 objective-c 中文加密,再解密乱码 求助:iOS手机app内设置手机可以做ap有开放的api否? ios 怎么获取当前view上所有显示的信息? 打开别人机器上创建的PhoneGap工程报错的问题 如何手动创建button 3D Touch 問題 CCb是什么 object-c协议问题 请教各位一个问题:facetime或者 企鹅 视频 中 远端的视频是如何展现的?
NSURL *url=[NSURL URLWithString:@"***********"];
versionRequest = [ASIFormDataRequest requestWithURL:url];
[versionRequest setDelegate:self];
[versionRequest setTimeOutSeconds:150];
[versionRequest addRequestHeader:@"Content-Type" value:@"application/json"];
[versionRequest startSynchronous];
NSString *jsonResponseString = [versionRequest responseString];
NSURL *url=[NSURL URLWithString:@"***********"];
versionRequest = [ASIFormDataRequest requestWithURL:url];
[versionRequest setDelegate:self];
[versionRequest setTimeOutSeconds:150];
[versionRequest addRequestHeader:@"Content-Type" value:@"application/json"];
[versionRequest startSynchronous];
NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest
NSURL *url=[NSURL URLWithString:@"***********"];
versionRequest = [ASIFormDataRequest requestWithURL:url];
[versionRequest setDelegate:self];
[versionRequest setTimeOutSeconds:150];
[versionRequest addRequestHeader:@"Content-Type" value:@"application/json"];
[versionRequest startSynchronous];
NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest
我试过了,情况有所好转,之前是 返回什么iis 405之类的乱码,改成asihttprequest后返回的内容只是 :
{"version":"1.0.8","update":"æ´æ°å 容","updateurl":"********","apptitle":"å¹³é³çµå移å¨åå ¬ç³»ç»"}
还是很奇怪,最前面怎么还多余了几个字符。中文乱码还是没解决
NSURL *url=[NSURL URLWithString:@"***********"];
versionRequest = [ASIFormDataRequest requestWithURL:url];
[versionRequest setDelegate:self];
[versionRequest setTimeOutSeconds:150];
[versionRequest addRequestHeader:@"Content-Type" value:@"application/json"];
[versionRequest startSynchronous];
NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest 被我解决了,谢谢你,对我帮助很大。
NSURL *url=[NSURL URLWithString:@"***********"];
versionRequest = [ASIFormDataRequest requestWithURL:url];
[versionRequest setDelegate:self];
[versionRequest setTimeOutSeconds:150];
[versionRequest addRequestHeader:@"Content-Type" value:@"application/json"];
[versionRequest startSynchronous];
NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest
我试过了,情况有所好转,之前是 返回什么iis 405之类的乱码,改成asihttprequest后返回的内容只是 :
{"version":"1.0.8","update":"æ´æ°å 容","updateurl":"********","apptitle":"å¹³é³çµå移å¨åå ¬ç³»ç»"}
还是很奇怪,最前面怎么还多余了几个字符。中文乱码还是没解决
返回代码405是因为服务器不允许静态文件响应POST请求吧,所以你换了ASIHTTPRequest之后能正常获得数据。
返回乱码这个编码问题,你先转成NSData试下,不一定有用。
NSData *jsondata = [request responseData];
NSString *jsonString = [[NSString alloc] initWithBytes:[jsondata bytes] length:[jsondata length] encoding:NSUTF8StringEncoding];
NSURL *url=[NSURL URLWithString:@"***********"];
versionRequest = [ASIFormDataRequest requestWithURL:url];
[versionRequest setDelegate:self];
[versionRequest setTimeOutSeconds:150];
[versionRequest addRequestHeader:@"Content-Type" value:@"application/json"];
[versionRequest startSynchronous];
NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest
我试过了,情况有所好转,之前是 返回什么iis 405之类的乱码,改成asihttprequest后返回的内容只是 :
{"version":"1.0.8","update":"æ´æ°å 容","updateurl":"********","apptitle":"å¹³é³çµå移å¨åå ¬ç³»ç»"}
还是很奇怪,最前面怎么还多余了几个字符。中文乱码还是没解决
返回代码405是因为服务器不允许静态文件响应POST请求吧,所以你换了ASIHTTPRequest之后能正常获得数据。
返回乱码这个编码问题,你先转成NSData试下,不一定有用。
NSData *jsondata = [request responseData];
NSString *jsonString = [[NSString alloc] initWithBytes:[jsondata bytes] length:[jsondata length] encoding:NSUTF8StringEncoding];asiformdatarequest 是asihttprequest的子类,asiformdatarequest是post请求,那asihttprequest是什么?
NSURL *url=[NSURL URLWithString:@"***********"];
versionRequest = [ASIFormDataRequest requestWithURL:url];
[versionRequest setDelegate:self];
[versionRequest setTimeOutSeconds:150];
[versionRequest addRequestHeader:@"Content-Type" value:@"application/json"];
[versionRequest startSynchronous];
NSString *jsonResponseString = [versionRequest responseString];你这个地方如果不是必须要POST,而且没什么参数的话,你试下ASIHTTPRequest代替ASIFormDataRequest
我试过了,情况有所好转,之前是 返回什么iis 405之类的乱码,改成asihttprequest后返回的内容只是 :
{"version":"1.0.8","update":"æ´æ°å 容","updateurl":"********","apptitle":"å¹³é³çµå移å¨åå ¬ç³»ç»"}
还是很奇怪,最前面怎么还多余了几个字符。中文乱码还是没解决
返回代码405是因为服务器不允许静态文件响应POST请求吧,所以你换了ASIHTTPRequest之后能正常获得数据。
返回乱码这个编码问题,你先转成NSData试下,不一定有用。
NSData *jsondata = [request responseData];
NSString *jsonString = [[NSString alloc] initWithBytes:[jsondata bytes] length:[jsondata length] encoding:NSUTF8StringEncoding];asiformdatarequest 是asihttprequest的子类,asiformdatarequest是post请求,那asihttprequest是什么?
是这样的,ASIFormDataRequest可以发送类似与HTML表单数据,也可以上传数据,默认采用POST请求方法,ASIHTTPRequest默认GET,这两段代码你可以分别在他们对应的.m文件找到 //在 ASIFormDataRequest.m里
+ (id)requestWithURL:(NSURL *)newURL
{
return [[[self alloc] initWithURL:newURL] autorelease];
}- (id)initWithURL:(NSURL *)newURL
{
self = [super initWithURL:newURL];
[self setPostFormat:ASIURLEncodedPostFormat];
[self setStringEncoding:NSUTF8StringEncoding];
[self setRequestMethod:@"POST"];
return self;
}//在ASIHTTPRequest.m里
// HTTP method to use (eg: GET / POST / PUT / DELETE / HEAD etc). Defaults to GET
NSString *requestMethod;,但是它们也可以其它的HTTP请求方法,都可以进行异步或同步请求。
比如你之前的代码,使用ASIFormDataRequest,但是加上下面的设置GET请求,也是可以获取的,你可以试下,
ASIFormDataRequest *request =....;
[request setRequestMethod:@"GET"];
格式化一下 就ok了
__block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:URL];
FLog(@"allKey=%@",[paramDic allKeys]);
for (NSString *key in [paramDic allKeys]) {
[request setPostValue:[[paramDic objectForKey:key] lowercaseString] forKey:key];
}
[request setCompletionBlock:^{
//正确
NSString *resultString = [[[NSString alloc] initWithBytes:[[request responseData] bytes] length:[[request responseData] length] encoding:NSUTF8StringEncoding] autorelease];
[self.userDataDelegate addUserDataSuccess:[FJsonDataParserObject parseAddUserData:resultString]];
NSLog(@"succ:%@",resultString); //返回 [{"Success":"YES"}]
/* 下面返回 [{"Success":"YES"}]
NSString *response = [request responseString];
NSLog(@"r=%@",response);
[self.userDataDelegate addUserDataSuccess:[FJsonDataParserObject parseAddUserData:response]];
*/
}];
为什么会这样,坑爹的问题!