Grails多部分服务流意外终止 [英] Grails Multipart Service Stream ended unexpectedly
问题描述
我正在编写一个ios应用程序,我需要将我的应用程序的照片发送到我的grails服务器。
在ios中,我这样做:
+(void)sendPhoto:(NSData *)withName的数据:(NSString * )name onController:(UIViewController< MERequestDelegate> *)controller
{
MERequest * request = [[MERequest alloc] init];
request.delegate = controller;
//用户
用户*用户= [用户loadUser];
// Creazione del BOdy della richiesta Multipart
NSMutableData * body = [[NSMutableData alloc] init];
//令牌
[body appendData:[[NSString stringWithFormat:@\r\\\
- %@ \\\\
,kBOUNDARY] dataUsingEncoding:NSUTF8StringEncoding] ]。
[body appendData:[[NSString stringWithFormat:@Content-Disposition:form-data; name = \token \\r\\\
\r\\\
%@,user。 token] dataUsingEncoding:NSUTF8StringEncoding]];
// Immagine
[body appendData:[[NSString stringWithFormat:@\r\\\
- %@ \\\\
,kBOUNDARY] dataUsingEncoding:NSUTF8StringEncoding] ]。
[body appendData:[[NSString stringWithFormat:@Content-Disposition:form-data; name = \photo\; filename = \%@。jpg\\r\ n,name] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@Content-Type:image / jpg\r\\\
\r\\\
dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:data]];
// Chiusura Body
[body appendData:[[NSString stringWithFormat:@\r\\\
- %@ \r\\\
,kBOUNDARY] dataUsingEncoding:NSUTF8StringEncoding ]];
[request requestMultipartAtUrl:[NSString stringWithFormat:@%@ WS / sendMultipart,[SettingsUtils webAppUrl]] withData:body];
$ b - (void)requestMultipartAtUrl:(NSString *)url withData:(NSData *)body
{
// NSError * error;
NSString * stringToBeSent;
_timeOutSecond = 10;
stringToBeSent = [[NSString alloc] initWithFormat:@%@,url];
NSLog(@URL:%@,stringToBeSent);
// Url
self.theUrl = [NSURL URLWithString:[stringToBeSent stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
//请求
self.mutableRequest = [NSMutableURLRequest requestWithURL:self.theUrl];
// Header
[self.mutableRequest setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[self.mutableRequest setHTTPShouldHandleCookies:NO];
[self.mutableRequest setTimeoutInterval:30];
[self.mutableRequest setHTTPMethod:@POST];
NSString * contentType = [NSString stringWithFormat:@multipart / form-data; boundary =%@,kBOUNDARY];
[self.mutableRequest addValue:contentType forHTTPHeaderField:@Content-Type];
[self.mutableRequest addValue:[NSString stringWithFormat:@%d,[body length]] forHTTPHeaderField:@Content-Length];
// Data
[self.mutableRequest setHTTPBody:body];
//设置计时器
if(_timer == NULL){
_timer = [NSTimer scheduledTimerWithTimeInterval:_timeOutSecond
target:self
selector:@selector (requestTimedOut :)
userInfo:nil
repeats:NO];
}
//创建连接
_connection = [[NSURLConnection alloc] initWithRequest:self.mutableRequest delegate:self];
在Grails中,我有一个只有println的空白方法:
def sendMultipart = {
println(Send)
}
当我启动应用程序并创建请求时,我在grails上遇到了这个错误:
2014-02-11 23:28:46,925 [http-8080-1] ERROR [org.apache.catalina.core.ContainerBase。[Tomcat]。[localhost]。[/ SimplifyWFA]。 [默认](StandardWrapperValve.java:281)] - Servlet.service()用于servlet默认抛出异常
org.springframework.web.multipart.MultipartException:无法分析多部分servlet请求;嵌套异常是org.apache.commons.fileupload.FileUploadException:流意外终止
在org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:162)
在org.codehaus。 groovy.grails.web.multipart.ContentLengthAwareCommonsMultipartResolver.parseRequest(ContentLengthAwareCommonsMultipartResolver.java:48)
at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:138)
at org。 codehaus.groovy.grails.web.mapping.DefaultUrlMappingInfo.getResolvedRequest(DefaultUrlMappingInfo.java:173)
at org.codehaus.groovy.grails.web.mapping.DefaultUrlMappingInfo.tryMultipartParams(DefaultUrlMappingInfo.java:163)
。在org.codehaus.groovy.grails.web.mapping.DefaultUrlMappingInfo.checkDispatchAction(DefaultUrlMappingInfo.java:140)
在org.codehaus.groovy.grails.web.mapping.DefaultUrlMappingInfo.getActionName(DefaultUrlMappingInfo.ja va:122)
位于org.codehaus.groovy.grails.web.mapping.AbstractUrlMappingInfo.populateParamsForMapping(AbstractUrlMappingInfo.java:94)
位于org.codehaus.groovy.grails.web.mapping.AbstractUrlMappingInfo。配置在org.codehaus.groovy.grails.plugins.springsecurity.AnnotationFilterInvocationDefinition.configureMapping(AnnotationFilterInvocationDefinition.java:144)
(AbstractUrlMappingInfo.java:44)
。在org.codehaus.groovy.grails.plugins。 springsecurity.AnnotationFilterInvocationDefinition.determineUrl(AnnotationFilterInvocationDefinition.java:82)
位于org.springframework.security处的org.codehaus.groovy.grails.plugins.springsecurity.AbstractFilterInvocationDefinition.getAttributes(AbstractFilterInvocationDefinition.java:80)
。 access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:172)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:10 6)
。在在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(的FilterChainProxy org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
。 Java的:381)
在org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(的FilterChainProxy。 Java的:381)
在org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(的FilterChainProxy。 Java的:381),美元,org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:112 b $ b)
在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter( FilterChai
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter( FilterChainProxy.java:381)
位于org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
位于org.codehaus.groovy.grails.plugins.springsecurity.RequestHolderAuthenticationFilter。 doFilter(RequestHolderAuthenticationFilter.java:40)
at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.codehaus.groovy.grails.plugins.springsecurity。 MutableLogoutFilter.doFilter(MutableLogoutFilter.java:79)
at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.springframework.security.web.context。 SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)维持在org.springframework.security.web.FilterChainProxy org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:381)
。 doFilter(FilterChainProxy.java:168)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy。
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)在org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java: 76)
在org.apache.catalina.core.Appl icationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
位于org.codehaus.groovy.grails.web.filters。 HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:235)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206
)
在org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java: 88)
。在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
。在org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)$ b $ org.springframework.web.filter.DelegatingFilter Proxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)$ b在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
$ b在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
。在组织.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
在org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.j ava:583)
at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:695)
引起的:org.apache.commons.fileupload.FileUploadException:流结束意外美元,org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:381)
b $ b。在组织。 apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:155)
... 59 more
由org.apache.commons.fileupload.MultipartStream $ MalformedStreamException:Stream意外终止
导致org.apache.commons.fileupload.MultipartStream.readHeaders(MultipartStream.java:539)
在org.apache.commons.fileupload.FileUploadBase $ FileItemIteratorImpl.findNextItem(FileUploadBase.java:976)
在org.apache.commons.fileupload.FileUploadBase $ FileItemIteratorImpl.hasNext(
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:356)
... 61 more
为什么会出现此错误?这是ios故障?或者我错过了Grails设置?
感谢!
解决方案<我解决了这个问题!
问题出在这里:
$ b $ pre $// Chiusura Body
[body appendData:[[NSString stringWithFormat: @\r\\\
- %@ \r\\\
,kBOUNDARY] dataUsingEncoding:NSUTF8StringEncoding]];
多边形闭合体需要边界后的 - :
@\r\\\
- %@ -
在这里,我们去:D
I'm coding an ios app and I need to send photo from my app to my grails server. In ios i do this:
+(void)sendPhoto:(NSData *)data withName:(NSString *)name onController:(UIViewController<MERequestDelegate> *)controller
{
MERequest *request = [[MERequest alloc] init];
request.delegate = controller;
//User
User *user = [User loadUser];
//Creazione del BOdy della richiesta Multipart
NSMutableData *body = [[NSMutableData alloc] init];
//Token
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", kBOUNDARY] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"token\"\r\n\r\n%@", user.token] dataUsingEncoding:NSUTF8StringEncoding]];
//Immagine
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", kBOUNDARY] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"photo\"; filename=\"%@.jpg\"\r\n", name] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/jpg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:data]];
//Chiusura Body
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", kBOUNDARY] dataUsingEncoding:NSUTF8StringEncoding]];
[request requestMultipartAtUrl:[NSString stringWithFormat:@"%@WS/sendMultipart", [SettingsUtils webAppUrl]] withData:body];
}
-(void)requestMultipartAtUrl:(NSString *)url withData:(NSData *)body
{
//NSError *error;
NSString *stringToBeSent;
_timeOutSecond = 10;
stringToBeSent = [[NSString alloc] initWithFormat:@"%@", url];
NSLog(@"URL: %@", stringToBeSent);
//Url
self.theUrl = [NSURL URLWithString:[stringToBeSent stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
//Request
self.mutableRequest = [NSMutableURLRequest requestWithURL:self.theUrl];
//Header
[self.mutableRequest setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[self.mutableRequest setHTTPShouldHandleCookies:NO];
[self.mutableRequest setTimeoutInterval:30];
[self.mutableRequest setHTTPMethod:@"POST"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", kBOUNDARY];
[self.mutableRequest addValue:contentType forHTTPHeaderField:@"Content-Type"];
[self.mutableRequest addValue:[NSString stringWithFormat:@"%d", [body length]] forHTTPHeaderField:@"Content-Length"];
//Data
[self.mutableRequest setHTTPBody:body];
//Set Timer
if(_timer == NULL){
_timer = [NSTimer scheduledTimerWithTimeInterval:_timeOutSecond
target:self
selector:@selector(requestTimedOut:)
userInfo:nil
repeats:NO];
}
//Create the connection
_connection = [[NSURLConnection alloc] initWithRequest:self.mutableRequest delegate:self];
}
In Grails i have a blank method with only a println:
def sendMultipart = {
println("Send")
}
When i launch the app and create the request i have this error on grails:
2014-02-11 23:28:46,925 [http-8080-1] ERROR [org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/SimplifyWFA].[default](StandardWrapperValve.java:281)] - Servlet.service() for servlet default threw exception
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly
at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:162)
at org.codehaus.groovy.grails.web.multipart.ContentLengthAwareCommonsMultipartResolver.parseRequest(ContentLengthAwareCommonsMultipartResolver.java:48)
at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:138)
at org.codehaus.groovy.grails.web.mapping.DefaultUrlMappingInfo.getResolvedRequest(DefaultUrlMappingInfo.java:173)
at org.codehaus.groovy.grails.web.mapping.DefaultUrlMappingInfo.tryMultipartParams(DefaultUrlMappingInfo.java:163)
at org.codehaus.groovy.grails.web.mapping.DefaultUrlMappingInfo.checkDispatchAction(DefaultUrlMappingInfo.java:140)
at org.codehaus.groovy.grails.web.mapping.DefaultUrlMappingInfo.getActionName(DefaultUrlMappingInfo.java:122)
at org.codehaus.groovy.grails.web.mapping.AbstractUrlMappingInfo.populateParamsForMapping(AbstractUrlMappingInfo.java:94)
at org.codehaus.groovy.grails.web.mapping.AbstractUrlMappingInfo.configure(AbstractUrlMappingInfo.java:44)
at org.codehaus.groovy.grails.plugins.springsecurity.AnnotationFilterInvocationDefinition.configureMapping(AnnotationFilterInvocationDefinition.java:144)
at org.codehaus.groovy.grails.plugins.springsecurity.AnnotationFilterInvocationDefinition.determineUrl(AnnotationFilterInvocationDefinition.java:82)
at org.codehaus.groovy.grails.plugins.springsecurity.AbstractFilterInvocationDefinition.getAttributes(AbstractFilterInvocationDefinition.java:80)
at org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:172)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:106)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:112)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
at org.codehaus.groovy.grails.plugins.springsecurity.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:40)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.codehaus.groovy.grails.plugins.springsecurity.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:168)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:695)
Caused by: org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:381)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:155)
... 59 more
Caused by: org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
at org.apache.commons.fileupload.MultipartStream.readHeaders(MultipartStream.java:539)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:976)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.hasNext(FileUploadBase.java:1040)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:356)
... 61 more
Why this error appear? It's ios fault? or I missed grails settings?
Thanks!
I solved the issue!! THe problem was here:
//Chiusura Body
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", kBOUNDARY] dataUsingEncoding:NSUTF8StringEncoding]];
Multipart closed body need the "--" after the boundary:
@"\r\n--%@--"
Here we go :D
Thanks to this: Multipart Description
这篇关于Grails多部分服务流意外终止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!