从iPhone发送多部分请求到Ruby on Rails(RoR)服务器

我搜索过这个问题并发现了类似的问题,但没有人喜欢它。

我正在手动构建请求

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:TEST_URL]]; [request setHTTPMethod:@"POST"]; NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; [request addValue:contentType forHTTPHeaderField:@"Content-Type"]; NSMutableData *body = [NSMutableData data]; [body appendData:[[NSString stringWithFormat:@"--%@\r\n\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=upload[jsondata]\r\n\n Content-Type: application/octet-stream\r\n\r\n", [dateFormatter stringFromDate:startDate]] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[json dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [request setHTTPBody:body]; 

当此请求到达rails服务器时,它理解Content-Disposition,Content-Type,但正文的JSON部分被捕获为“ActionDispatch :: Http :: UploadedFile”,这意味着服务器不理解JSON并且正在查找就像它是一个文件一样。

我究竟做错了什么? 这是iOS设备发出的请求并发送到Rails服务器的问题吗? 某种bug? 我已经尝试过ASIHTTPRequest,结果相同。

我用非常简单的东西解决了这个问题。 我不得不删除

 Content-Type: application/octet-stream 

从身体,我不得不添加连接:保持活着请求,如下所示:

 [request setValue:@"Keep-Alive" forHTTPHeaderField:@"Connection"]; 

我在使用WireShark在接收计算机上听取请求并注意到连接设置为默认关闭后尝试了它。