【发布时间】:2011-11-12 19:28:43
【问题描述】:
我正在制作一个包含内置 HTTP 服务器的应用程序。我需要通过套接字发送一个 PNG 图像,但不知何故它变得一团糟,图像就没有显示出来。这是我的代码(我正在使用 AsyncSockets):
if(processingURL == FALSE) {
NSString *filePath = [[NSString alloc] initWithFormat:@"%@/Contents/Resources/public%@",[self getApplicationPath], [request objectAtIndex:1]];
//NSLog(@"%@", filePath);
if([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
contententType = @"image/png";
responseCode = @"200 OK";
// responseBody = [[NSString alloc] initWithData:[[NSFileManager defaultManager] contentsAtPath:filePath] encoding:NSASCIIStringEncoding];
NSData * content = [[NSData alloc] initWithContentsOfFile:filePath];
responseBody = [[NSString alloc] initWithData:content encoding:NSASCIIStringEncoding];
NSLog(@"%@",responseBody);
}
}
data = [[NSString stringWithFormat:@"HTTP/1.1 %@\nContent-Type: %@\n\n\n %@", responseCode, contententType, responseBody] dataUsingEncoding:NSUTF8StringEncoding];
[sock writeData:data withTimeout:-1 tag:0];
我做错了什么?我认为问题在于响应格式错误,但我不知道,谢谢:)
【问题讨论】:
-
你应该向你的包询问图像的路径或 URL,而不是使用字符串连接方法或
stringWithFormat:将部分路径装订在一起。 -
此外,在生成输出时,您似乎假设您有一个“
contententType”和responseBody,无论您是否实际找到并读取了文件并因此分配了它们。 -
嗨彼得霍西。我在该代码之前默认设置了我的正文和标题,以防万一发生故障。我现在也知道我必须将图像作为二进制数据发送,谢谢
标签: macos cocoa sockets cocoaasyncsocket