iPhone публикует xml на веб-сервисах ASP.net MVC - PullRequest
1 голос
/ 02 мая 2011

Можно ли отправлять XMLData на веб-сервисы из iPhone OS.Веб-сервисы разработаны в ASP.net MVC 3.0 с URL-адресом RESTFul, и мы хотели бы, чтобы разработчики iPhone отправляли входные данные в формате XML как переменную POST.

Результат действия веб-сервиса выглядит следующим образом, где sightings - это параметр, которыйожидается, что будет передаваться как переменная POST

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

1 Ответ

2 голосов
/ 02 мая 2011

Это определенно применимо, все, что вам нужно сделать, это использовать NSMutableURLRequest следующим образом:

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
}

И теперь в вашем ASHX-файле проанализируйте InputStream, чтобы прочитать опубликованный XML:

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();            
}

Помните, что вы всегда можете проверить тип запроса используя:

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

MSDN HttpRequest.InputStream

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...