从iphone发送多部分实体数据

时间:2012-11-01 06:18:08

标签: iphone ios multipartentity

我使用以下代码将Multipart Entity数据发送到服务器,服务器每次都给我403响应。

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:@"http://www.britecase.com/administrator/components/com_ivmstore/ivmwebservices/vmphotos.php"]];
    [request setHTTPMethod:@"POST"];
    NSString *boundary = [NSString stringWithFormat:@"---------------------------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--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];    
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition:form-data; name=\"files[]\"; filename=\"ipodfile.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"Content-Type:application/octet-stream \r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[NSData dataWithData:UIImageJPEGRepresentation(image.image, 90)]];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [request setHTTPBody:body];


    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

    NSLog(@"%@",returnString);

我每次都得到以下回复。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /administrator/components/com_ivmstore/ivmwebservices/vmphotos.php
on this server.</p>
<hr>
<address>Apache Server at www.britecase.com Port 80</address>
</body></html>

我们的Android应用程序成功响应。在这里,我逐渐了解到他们正在为browser compatible使用以下代码实现多部分实体。

MultipartEntity entity = new MultipartEntity(
                        HttpMultipartMode.BROWSER_COMPATIBLE);
                                          ^^^^^^^^^^^^^^^^^^

0 个答案:

没有答案