2010-11-27 35 views
0

私は、サーバにPDFファイルと、2つのPOST変数、ユーザID、およびジョブIDを送る必要のあるiPadアプリケーションを持っています。私はこれを行うには、以下のコードを使用しています:サーバへのPDFのNSDataのPOSTに失敗する

NSData * pdfData = [NSData dataWithContentsOfFile:currentPDFFileName];

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ファイルを受信して​​いないと言っています。私は何も無しの物を見つけようとするような通常の容疑者すべてを試しました。

誰もがこの手を貸してくれれば大いに感謝します!

ありがとうございました。 Ricky。

+0

リクエストが送信完了後、 '[pdfError code]'と '[(NSURLHTTPRequest *)pdfResponse statusCode]'の値をログに記録して、ここに投稿できますか? – Endemic

+0

'[pdfError code]'が0を返し、(あなたが意図したと思う) '[(NSHTTPURLResponse *)pdfResponse statusCode]'がEXC_BAD_ACCESSを引き起こしました。 –

+0

そのミックスアップについては申し訳ありませんが、リクエストの代わりにレスポンスを使用しました。その値をオブジェクトではなく整数としてログに記録しようとしましたか?その場合は、要求後にResponseオブジェクトがすべて存在することを確認できますか? – Endemic

答えて

0

境界に問題がありました。 pdfDataを追加した後、最後に追加する必要がありました。ご協力ありがとうございました。

関連する問題