来自NSMutableURLRequest的iOS/Objective C- null响应

Wel*_*lls 0 objective-c ios

这段代码:

NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.cnn.com"]];

[req setHTTPMethod:@"GET"];

NSURLResponse *res;
NSError *err;
NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err];
NSString *html  = [NSString stringWithUTF8String:[data bytes]];

NSLog(@"email adress is %@ and password is %@, response is %@, length is %i", self.boxEmail.text, self.boxPassword.text, html, data.length);
Run Code Online (Sandbox Code Playgroud)

显示null为html.出了什么问题?

NSLog'ing data.description产量:

<3c21444f 43545950 45204854 4d4c3e0a 3c68746d 6c206c61 6e673d22 656e2d55 53223e0a 3c686561 643e0a3c
Run Code Online (Sandbox Code Playgroud)

等等

idz*_*idz 5

您不能假设数据将被NUL终止,因此您不应该致电stringWithUTF8String.使用以下内容:

NSString *html  = [[NSString alloc] initWithData:data 
                                        encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

如果您使用ARC或:

NSString *html  = [[[NSString alloc] initWithData:data 
                                         encoding:NSUTF8StringEncoding] autorelease]; 
Run Code Online (Sandbox Code Playgroud)

除此以外.

  • 你之所以得到`nil`的原因是NSString在走过你传递的字节的末尾时遇到了无效的UTF-8数据. (3认同)