从iphone发送多部分实体数据
我使用以下代码将多部分实体数据发送到服务器,服务器每次都给我403响应从iphone发送多部分实体数据,iphone,ios,multipartentity,Iphone,Ios,Multipartentity,我使用以下代码将多部分实体数据发送到服务器,服务器每次都给我403响应 NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; [request setURL:[NSURL URLWithString:@"http://www.britecase.com/administrator/components/com_ivmstore/ivmwebservices/vmphotos.php
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>
每次我都会得到以下回复
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部分。你知道这是为了什么目的使用的吗?如果他们删除了这一点,会发生什么?@ACB他们提供与浏览器兼容的属性。在iphone中,我们必须提供哪些属性?我在iOS中没有听说过这样的属性。是否可以与他们核实,他们使用此属性的目的是什么。如果他们没有通过,他们会得到什么样的回应?和你的一样吗?好的。这是从google得到的,“如果指定了与浏览器兼容,则http commons发送的数据不包含任何内容传输编码头”。我认为iOS不会在请求中发送任何这样的标题。在安卓系统中,默认情况下,它会发送这个消息,如果他们想避免使用这个消息,它似乎会发送。所以问题可能与你的边界有关。