Cocoa touch 无法将PDF的NSData发布到服务器
我有一个iPad应用程序,其中我需要向服务器发送一个PDF文件,以及两个POST变量,一个用户ID和一个工作ID。我使用下面的代码来完成此操作: NSData*pdfData=[NSData DATA WITH CONTENTS OFFILE:currentPDFFileName]Cocoa touch 无法将PDF的NSData发布到服务器,cocoa-touch,nsdata,nsurlrequest,Cocoa Touch,Nsdata,Nsurlrequest,我有一个iPad应用程序,其中我需要向服务器发送一个PDF文件,以及两个POST变量,一个用户ID和一个工作ID。我使用下面的代码来完成此操作: NSData*pdfData=[NSData DATA WITH CONTENTS OFFILE:currentPDFFileName] NSData *validPDF = [[NSString stringWithString:@"%PDF"] dataUsingEncoding: NSASCIIStringEncoding]; i
NSData *validPDF = [[NSString stringWithString:@"%PDF"] dataUsingEncoding: NSASCIIStringEncoding];
if (!(pdfData && [[pdfData subdataWithRange:NSMakeRange(0, 4)] isEqualToData:validPDF]))
{
NSLog (@"Not valid");
}
NSLog (@"%@", currentPDFFileName);
NSLog (@"%@", [currentPDFFileName lastPathComponent]);
//create the body
NSMutableData *body = [NSMutableData data];
//create the POST vars
NSString *jobID = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"jobid\"\r\n\r\n%@", job.jobID];
NSString *userID = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userid\"\r\n\r\n%@", delegate.userID];
NSString *pdf = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image_file\"; filename=\"%@\"\r\n", [currentPDFFileName lastPathComponent]];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", @"----foo"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[jobID dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", @"----foo"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[userID dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", @"----foo"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[pdf dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/pdf\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:pdfData];
NSMutableURLRequest *pdfRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://example.com"]];
[pdfRequest setValue:@"multipart/form-data; boundary=----foo" forHTTPHeaderField:@"Content-type"];
[pdfRequest setHTTPMethod:@"POST"];
[pdfRequest setHTTPBody:body];
NSData *pdfDataReply;
NSURLResponse *pdfResponse;
NSError *pdfError;
pdfDataReply = [NSURLConnection sendSynchronousRequest:pdfRequest returningResponse:&pdfResponse error:&pdfError];
NSString *pdfResult = [[NSString alloc] initWithData:pdfDataReply encoding:NSASCIIStringEncoding];
NSLog (@"%@", pdfResult);
连接另一端的人说他们没有收到PDF文件。我尝试了所有常见的嫌疑犯,比如试图找到任何零物体
如果有人能帮忙,我将不胜感激
谢谢。
瑞奇。结果是边界有问题。在添加pdfData之后,我需要在末尾添加一个。谢谢您的帮助。在请求发送完成后,您可以记录
[pdfError code]
和[(NSURLHTTPRequest*)pdfResponse statusCode]
的值,并将其发布到这里吗?[pdfError code]
返回0,并且(我想您的意思是)[(nshtpurlresponse*)pdfResponse statusCode]
导致EXC\u访问错误。很抱歉,我的意思是响应而不是请求。您确实尝试将该值记录为整数,而不是对象,对吗?如果是这样,您能在请求之后验证响应对象是否存在吗?