-(void)uploadJob:(Job *)job
{
NSLog(@"Server: uploadJob: called");
NSString *preparedJob=[Database prepareJobForUploading:job];
if ([preparedJob isEqualToString:@""])
{
return;
};
NSLog(@"preparedJob: %@", preparedJob);
NSString *post = [NSString stringWithFormat:@"accessToken=%@&job=%@", self.key, preparedJob];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@upload.aspx", serverAPIPath]]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLResponse *response;
NSError *error;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"responseData: %@", [urlData description]);
NSString *responseString=[NSString stringWithFormat:@"response: %d. description: %@",[(NSHTTPURLResponse *)response statusCode],[NSHTTPURLResponse localizedStringForStatusCode:[(NSHTTPURLResponse *)response statusCode]]];
NSString *resultString=[[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"response: %@", responseString);
NSLog(@"result: %@", resultString);
}
このコードはコンパイルされますが、機能しません。サーバーから空のデータが返されますが、空であってはなりません。問題は次のようです:私のpostData
変数はUTF8エンコーディングで送信されますが、ASCIIでは送信されません(たとえば、シンボルが%20に変更された場合など)。私のコードの何が問題になっていますか? この問題を解決するにはどうすればよいですか?
ちなみにpreparedJob
文字列は生成されたJSONを含む文字列です