Hallo,
ich schreibe meine CoreData-Daten (inkl. Bilder) in einen XML String und diesen String an einen Server schicken.
Dafür habe ich einen NSMutableURLRequest (Post) und eine asynchrone NSURLConnection.
Das Problem ist jetzt, dass er den String manchmal schickt, und manchmal nicht. Das hängt anscheinend mit der Länge des Strings zusammen.
Erstmal der Quelltext:
Alles anzeigen
Die NSURLConnection Delegate Methoden:
Alles anzeigen
Wie gesagt, manchmal sendet er alles, dann wiederum führt er die Delegate Methode mit den "BytesWritten" nur 4 mal aus:
Total Written: 13511
Total Expected: 117657
Total Written: 16307
Total Expected: 117657
Total Written: 19103
Total Expected: 117657
Total Written: 21899
Total Expected: 117657
Dann macht er nichts mehr, aber der ActivityIndicator dreht sich dennoch schön weiter. Eine Fehlermeldung bekomme ich auch nicht.
V.a. mit mehreren Bildern und der daraus resultierenden Größe des Strings schlägt es immer fehl.
Mit max. 1-2 Bildern führt er es meist normal aus:
Total Written: 32768
Total Expected: 63328
Total Written: 63328
Total Expected: 63328
Die Bilder habe ich auch schon auf 10% der ursprünglichen Größe reduziert, aber dennoch das selbe Problem.
Habe auch schon andere Möglichkeiten wie synchronen Request probiert. Aber immer das selbe Problem.
Wenn ich zB einen synchronen Request mache, dann bringt er mir immer einen "Connection timeout" Fehler.
Auch mit [urlRequest setTimeoutInterval:60.0] oder einer anderen Zeitangabe.
Hoffe mir kann jemand nen Denkansatz geben oder mich auf meinen Fehler hinweisen.
ich schreibe meine CoreData-Daten (inkl. Bilder) in einen XML String und diesen String an einen Server schicken.
Dafür habe ich einen NSMutableURLRequest (Post) und eine asynchrone NSURLConnection.
Das Problem ist jetzt, dass er den String manchmal schickt, und manchmal nicht. Das hängt anscheinend mit der Länge des Strings zusammen.
Erstmal der Quelltext:
Quellcode
- NSString *parameterString = [NSString stringWithFormat: @"%@?user=%@&pass=%@&method=%@&body=%@&data=INSPECTION",
- [defaults objectForKey:kUrl],
- [defaults objectForKey:kUsername],
- [defaults objectForKey:kPassword],
- @"put", xmlString2];
- NSData *postData = [parameterString dataUsingEncoding:NSUTF8StringEncoding];
- NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
- NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:parameterString]];
- [urlRequest setHTTPMethod:(@"POST")];
- [urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
- [urlRequest setHTTPBody:postData];
- [urlRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
- [NSURLConnection connectionWithRequest:urlRequest delegate:self];
Die NSURLConnection Delegate Methoden:
Quellcode
- - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
- NSLog(@"Succeeded!");}
- - (void)connection:(NSURLConnection *)connectiondidFailWithError:(NSError *)error {
- NSLog(@"Connection failed! Error - %@ %@",
- [error localizedDescription],
- [[error userInfo] objectForKey:NSErrorFailingURLStringKey]);
- }
- - (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite {
- NSLog(@"Total Written: %i", totalBytesWritten);
- NSLog(@"Total Expected: %i", totalBytesExpectedToWrite);
- }
- - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
- NSLog(@"Data received");
- }
Wie gesagt, manchmal sendet er alles, dann wiederum führt er die Delegate Methode mit den "BytesWritten" nur 4 mal aus:
Total Written: 13511
Total Expected: 117657
Total Written: 16307
Total Expected: 117657
Total Written: 19103
Total Expected: 117657
Total Written: 21899
Total Expected: 117657
Dann macht er nichts mehr, aber der ActivityIndicator dreht sich dennoch schön weiter. Eine Fehlermeldung bekomme ich auch nicht.
V.a. mit mehreren Bildern und der daraus resultierenden Größe des Strings schlägt es immer fehl.
Mit max. 1-2 Bildern führt er es meist normal aus:
Total Written: 32768
Total Expected: 63328
Total Written: 63328
Total Expected: 63328
Die Bilder habe ich auch schon auf 10% der ursprünglichen Größe reduziert, aber dennoch das selbe Problem.
Habe auch schon andere Möglichkeiten wie synchronen Request probiert. Aber immer das selbe Problem.
Wenn ich zB einen synchronen Request mache, dann bringt er mir immer einen "Connection timeout" Fehler.
Auch mit [urlRequest setTimeoutInterval:60.0] oder einer anderen Zeitangabe.
Hoffe mir kann jemand nen Denkansatz geben oder mich auf meinen Fehler hinweisen.
Knowing is not enough, we must apply.
Willing is not enough, we must do.
Willing is not enough, we must do.