2010-12-06 3 views
0

Quelqu'un peut-il me dire comment appeler le service Web SharePoint GetListItems. Je reçois un message d'erreur "403 Interdit" à appeler cette méthodecomment appeler le service Web sharepoint GetListItems en utilisant l'objectif C

Le code pour ma demande d'en-tête HTTP est:

[theRequest setValue: cookie forHTTPHeaderField:@"Cookie"]; 
[theRequest setHTTPShouldHandleCookies:YES]; 
[theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[theRequest addValue: saction forHTTPHeaderField:@"SOAPAction"]; 
[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"]; 
[theRequest setHTTPMethod:@"POST"]; 
[theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

urlconnection = [NSURLConnection connectionWithRequest:theRequest delegate:self]; 

Ma structure XML pour appeler les méthodes GetListItems est:

<listName>listName</listName><viewName></viewName>< Query />< ViewFields />< rowLimit>< /rowLimit>< QueryOptions>< IncludeAttachmentUrls>TRUE< /IncludeAttachmentUrls>< /QueryOptions>< webID>< /webID>< /GetListItems>< /soap:Body>< /soap:Envelope> 

Quelqu'un peut-il me dire où je me trompe ou quoi d'autre je dois faire?

Merci d'avance.

+0

Salut, Comment êtes-vous arrivé résoudre ce problème? –

Répondre

0

Tout d'abord, vous avez besoin de ASIHTTPREQUEST, il est facile à utiliser et très puissant. Donc, je finis par faire comme ceci:

NSURL *url = [NSURL URLWithString:@"http://SHAREPOINTSITE/_vti_bin/Lists.asmx"]; //Always needs to end up with _vti_bin/WHATYOUNEED.asmx 

ASIHTTPRequest *asiRequest = [ASIHTTPRequest requestWithURL:url]; 

[asiRequest setUsername:@"USERNAME"]; 
[asiRequest setPassword:@"PASSWORD"]; 

[asiRequest setDelegate:self]; 

NSString *soapMessage = @"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 
"<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">\n" 
"<soap12:Body>\n" 
"<GetList xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\">\n" 
"<listName>STRING</listName>\n" 
"</GetList>\n" 
"</soap12:Body>\n" 
"</soap12:Envelope>\n"; 

[asiRequest appendPostData:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

[asiRequest addRequestHeader:@"Content-Type" value:@"text/xml; charset=utf-8"]; 

[asiRequest startAsynchronous]; 

étape suivante consiste à définir le délégué:

- (void)requestFinished:(ASIHTTPRequest *)request 
{ 
    NSString *responseString = [request responseString]; 
    NSLog(@"responseString : %@", responseString); 
    NSLog(@"Response Header: %@",[request responseHeaders]); 

    NSData *responseData = [request responseData]; 

    NSLog(@"responseData : %@", responseData); 
} 

- (void) requestFailed:(ASIHTTPRequest *)request 
{ 
    NSError *error = [request error]; 

    NSLog(@"Connection Error:  %@", error); 
    NSLog(@"Code: %i", [error code]); 
    NSLog(@"UserInfo: %@", [error userInfo]); 
    NSLog(@"Domain: %@", [error domain]); 

    NSLog(@"HelpAnchor: %@", [error helpAnchor]); 
} 
Questions connexes