2011-05-02 4 views
1

Est-il possible de POST XMLData aux services Web à partir de l'iPhone OS. Les webservices sont développés dans ASP.net MVC 3.0 avec l'URL RESTFul et nous aimerions que les développeurs iPhone envoient les données d'entrée au format XML comme variable POST ..iPhone xml poster sur les services Web ASP.net MVC

Le webservice actionresult ressemble à ceci où les observations sont le paramètre attendu passer comme variables POST

public ActionResult Update(XDocument sightings) 
{ 
    try 
    { 
     XMLHelper xmlHelper = new XMLHelper(); 
    } 
} 
+0

des mises à jour concernant votre problème? –

+0

Merci AhmadTK. Je n'ai pas essayé l'exemple de code car mon équipe iPhone n'a pas encore commencé à travailler dessus. On dirait que c'est exactement ce que je voulais et ça marchera. Je vais vous mettre à jour plus tard .. Merci ... – Anand

+0

Je suis heureux d'entendre que, quand vous êtes prêts, faites-moi savoir si vous avez besoin d'aide supplémentaire. –

Répondre

2

C'est tout ce que vous devez faire sans aucun doute applicable est d'utiliser NSMutableURLRequest comme suit:

NSString* sXMLToPost = @"<?xml version=\"1.0\"?><Name>user</Name>"; 

NSData* data = [sXMLToPost dataUsingEncoding:NSUTF8StringEncoding]; 

NSURL *url = [NSURL URLWithString:@"http://myurl.com/RequestHandler.ashx"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:[sXMLToPost dataUsingEncoding:NSUTF8StringEncoding]]; 

NSURLResponse *response; 
NSError *error; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 

if (error) { 
//handle the error 
} 

Et maintenant dans votre fichier ASHX analyser le InputStream à lire le code XML affiché:

System.IO.Stream str; String strmContents; 
Int32 counter, strLen, strRead; 

str = Request.InputStream; 

strLen = Convert.ToInt32(str.Length); 

byte[] strArr = new byte[strLen]; 

strRead = str.Read(strArr, 0, strLen); 

// Convert byte array to a text string. 
strmContents = ""; 
for (counter = 0; counter < strLen; counter++) 
{ 
    strmContents = strmContents + strArr[counter].ToString();    
} 

Rappelez-vous que vous pouvez toujours vérifier le type de demande à l'aide:

if (context.Request.RequestType == "POST")

MSDN HttpRequest.InputStream

Questions connexes