Upload File(of any type) to server
Hi,
I am trying to upload a file to server using soap call in Xcode.
I have a webservice which accepts two arguments
1-file of any type
2-name of the file
the input xml tree of webservice is:
<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<yq1:uploadClaimsToEcm xmlns:yq1="http://ecmDms/">
<files>
<file>PGh0bWw+DQoNCjxoZWFkPg0KDQogIDx0aXRsZT5FcnJv ciBSZXBvcnQ8L3RpdGxlPg0KDQogIDxzdHlsZT4NCg0KICAgIH RkIHtmb250LWZhbWlseSA6IEFyaWFsLCBUYWhvbWEsIEhlbHZl dGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplIDogMTRweDt9DQ oNCiAgICBBOmxpbmsge2NvbG9yIDogIzAwNTlBQTt9DQoNCiAg ICBBOnZpc2l0ZWQge2NvbG9yIDogIzk5OTk5OTt9DQoNCiAgIC BBOmFjdGl2ZSB7Y29sb3IgOiAjOTk5OTk5O30NCg0KICA8L3N0 eWxlPg0KDQo8L2hlYWQ+DQoNCjxib2R5IG1hcmdpbndpZHRoPS IwIiBtYXJnaW5oZWlnaHQ9IjAiIGxlZnRtYXJnaW49IjAiIHRv cG1hcmdpbj0iMCIgcmlnaHRtYXJnaW49IjAiPg0KDQogIDx0YW JsZSB3aWR0aD0iMTAwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBh ZGRpbmc9IjAiIGJvcmRlcj0iMCIgYWxpZ249ImxlZnQiIGhlaW dodD0iNzUiPg0KDQogICAgPHRyIGJnY29sb3I9IiNGRkZGRkYi Pg0KDQogICAgICA8dGQgYWxpZ249ImxlZnQiIGNvbHNwYW49Ij IiIGhlaWdodD0iNDgiPjxmb250IGZhY2U9IkFyaWFsLCBWZXJk YW5hLCBIZWx2ZXRpY2EiIHNpemU9IjQiIGNvbG9yPSIjNjY2Nj Y2Ij48Yj4mbmJzcDsmbmJzcDs0MTUgJm5ic3A7IFVuc3VwcG9y dGVkIE1lZGlhIFR5cGU8L2I+PC9mb250PjwvdGQ+DQoNCiAgIC A8L3RyPg0KDQogICAgPHRyIGJnY29sb3I9IiMzRjczQTMiPg0K DQogICAgICA8dGQgaGVpZ2h0PSIyMyIgd2lkdGg9Ijg0Ij48aW 1nIHdpZHRoPTEgaGVpZ2h0PTEgYm9yZGVyPTAgYWx0PSIiPjwv dGQ+DQoNCiAgICAgIDx0ZCBoZWlnaHQ9IjIzIj48aW1nIHdpZH RoPTEgaGVpZ2h0PTEgYm9yZGVyPTAgYWx0PSIiPjwvdGQ+DQoN CiAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIGhlaWdodD0iMjMiPj xmb250IGZhY2U9IkFyaWFsLCBWZXJkYW5hLCBIZWx2ZXRpY2Ei IHNpemU9IjIiIGNvbG9yPSIjRkZGRkZGIj48Yj5TQVAgTmV0V2 VhdmVyIEFwcGxpY2F0aW9uIFNlcnZlciZuYnNwOzwvYj48L2Zv bnQ+PC90ZD4NCg0KICAgIDwvdHI+DQoNCiAgICA8dHIgYmdjb2 xvcj0iIzlEQ0RGRCI+DQoNCiAgICAgIDx0ZCBoZWlnaHQ9IjQi IGNvbHNwYW49IjMiPjxpbWcgd2lkdGg9MSBoZWlnaHQ9MSBib3 JkZXI9MCBhbHQ9IiI+PC90ZD4NCg0KICAgIDwvdHI+DQoNCiAg PC90YWJsZT4NCg0KICA8YnI+PGJyPjxicj48YnI+PGJyPjxicj 4NCg0KICA8cD48Zm9udCBmYWNlPSJBcmlhbCwgVmVyZGFuYSwg SGVsdmV0aWNhIiBzaXplPSIzIiBjb2xvcj0iIzAwMDAwMCI+PG I+Jm5ic3A7Jm5ic3A7RXJyb3I6IGNvbS5zYXAuZW5naW5lLnNl cnZpY2VzLndlYnNlcnZpY2VzLmVzcGJhc2Uuc2VydmVyLmFkZG l0aW9ucy53c2EuV1NBZGRyZXNzaW5nRXhjZXB0aW9uOiBFeHBl Y3RlZCBjb250ZW50LXR5cGU6IHRleHQveG1sIHwgYXBwbGljYX Rpb24vc29hcCt4bWwgfCBtdWx0aXBhcnQvcmVsYXRlZC4gRm91 bmQgW211bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PS0tLS 0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTE0NzM3ODA5ODMxNDY2 NDk5ODgyNzQ2NjQxNDQ5XS48L2I+PC9mb250PjwvcD4NCg0KIC A8cD48Zm9udCBmYWNlPSJBcmlhbCwgVmVyZGFuYSwgSGVsdmV0 aWNhIiBzaXplPSIyIiBjb2xvcj0iIzAwMDAwMCI+PGI+Jm5ic3 A7Jm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly93aWtpLnNkbi5zYXAu Y29tL3dpa2kveC93SU4zQ3ciPlNBUCBUZWNobm9sb2d5IFRyb3 VibGVzaG9vdGluZyBHdWlkZTwvYT48L2I+PC9mb250PjwvcD4N Cg0KICA8cD48Zm9udCBmYWNlPSJBcmlhbCwgVmVyZGFuYSwgSG VsdmV0aWNhIiBzaXplPSIyIiBjb2xvcj0iIzAwMDAwMCI+PHRh YmxlPg0KDQogICAgPHRyPg0KDQogICAgICA8dGQgdmFsaWduPS J0b3AiPjxiPiZuYnNwO0RldGFpbHM6PC9iPjwvdGQ+DQoNCiAg ICAgIDx0ZCB2YWxpZ249InRvcCI+PFBSRT5ObyBkZXRhaWxzIG F2YWlsYWJsZS48L1BSRT48L3RkPg0KDQogICAgPC90cj4NCg0K ICA8L3RhYmxlPjwvZm9udD48L3A+DQoNCjwvYm9keT4NCg0KPC 9odG1sPg==</file>
<invoiceId>priya</invoiceId>
</files>
</yq1:uploadClaimsToEcm>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
and my code is:
- (IBAction)pushUpload {
NSData *imageData = UIImageJPEGRepresentation(imageView.image, 90);
NSUInteger len = [imageData length];
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, [imageData bytes], len);
NSString *file= @"/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBggGBQkIBwgKCQkKDRYODQwMDRoTFBAWHxwhIB8cHh 4jJzIqIyUvJR4eKzssLzM1ODg4ISo9QTw2QTI3ODUBCQoKDQsN GQ4OGTUkHiQ1NTU1NTU1NTU1NTU1NTU0NTU1NSk1KTU1NTU1LD I1NTU1KTU1NTU1LDU1KSwyNCw0Kf/AABEIABQAFAMBIgACEQEDEQH/xAAYAAEBAQEBAAAAAAAAAAAAAAAABgUHBP/EACcQAAIBAwIFBAMAAAAAAAAAAAECAwAEEQUGEjFBUWETIXGBF pGh/8QAGAEAAgMAAAAAAAAAAAAAAAAAAAQCBQb/xAAZEQEBAQEBAQAAAAAAAAAAAAABAgMAIRH/2gAMAwEAAhEDEQA/ANLeO8brWNQmtrWdo9PQlFWM4Eo6s3cHoO2KwLDUrvS7kT2NxJ BIOqHn4I5EeDTUrCXS9Sns7gESQOVPtjPYjwR7/deaklV+vajPOJgmTzu27T1/8j0JLtkCTIxilUcuIYOR4IIP3Sp3YG32l2369w0sPrTM8YVscS 4Az+waU1Kp1BtGc6UD1Fr+09N3HwNeI6TIMLNEeF8duRBHyKnN A2BpM7tNcG4mET49NnHC3zgA/wBpShkXiNtJzQrrpEWKNUjUIijCqowAOwpSlT5bv//Z";
NSString *soapMsg = [NSString stringWithFormat:
@"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
"<soap:Body>""<yq1:uploadClaimsToEcm xmlns:yq1=\"http://ecmDms/\">"
"<files>"
"<file>%@</file>"
"<invoiceId>FileName123</invoiceId>"
"</files>"
"</yq1:uploadClaimsToEcm>"
"</soap:Body>"
"</soap:Envelope>", file
];
//---print it to the Debugger Console for verification---
NSLog(@"%@", soapMsg);
NSURL *url = [NSURL URLWithString:
@"http://192.168.1.130:50000/DocumentProcessingService/DocumentProcessing"];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
//---set the headers---
NSString *msgLength = [NSString stringWithFormat:@"%d",
[soapMsg length]];
[req addValue:@"text/xml; charset=utf-8"
forHTTPHeaderField:@"Content-Type"];
[req addValue:@"http://192.168.1.90:50000/DocumentProcessingService/DocumentProcessing?wsdl"
forHTTPHeaderField:@"SOAPAction"];
[req addValue:msgLength forHTTPHeaderField:@"Content-Length"];
//---set the HTTP method and body---
[req setHTTPMethod:@"POST"];
[req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]];
conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
if (conn) {
webData = [[NSMutableData data] retain];
}
}
this is working fine if i hard code the file as variable file.
but failed to upload if i try to convert an image/file to bytedata and send it.
Please suggest me how to achieve this, as I am new to Obj-c, i am not sure whether this is the way to do it or not.
Thanks,
Indira
Last edited by indira.kalmanker; 06-28-2011 at 04:17 AM.
|