Как я могу портировать.HttpWebRequest от net в URL-запрос iOS

#c# #.net #objective-c #ios #nsurlrequest

#c# #.net #objective-c #iOS #nsurlrequest

Вопрос:

Как я могу перенести следующий HttpWebRequest .net в objective-c?

Мне были предоставлены фрагменты кода от коллеги для запроса POST в .net на определенный сервер, и мне потребовалось реализовать то же самое в iOS. Должен ли я просто использовать NSMutableURLRequest и NSURLConnection и их соответствующих делегатов или сделать что-то еще?

ниже приведены исходные фрагменты коллеги на C#:

 public void SendMessage(ref string Message)
{
   if (m_pURL == null) return;

   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_pURL);
   request.Method = "POST";
   request.ContentLength = Message.Length;
   request.AllowWriteStreamBuffering = false;
   request.UseDefaultCredentials = true;

   RequestState request_state = new RequestState();
   request_state.Request = request;
   request_state.RequestData.Append(Message);
   request.BeginGetRequestStream(WriteCallBack, request_state);
   request = null;
}

private void WriteCallBack(IAsyncResult iar)
{
   try
   {
     RequestState request_state = (RequestState)iar.AsyncState;
     HttpWebRequest request = request_state.Request;
     Stream stream = request.EndGetRequestStream(iar);

     byte[] buffer = Encoding.UTF8.GetBytes(request_state.RequestData.ToString());
                    stream.Write(buffer, 0, buffer.Length);
                    stream.Close();
                    request.BeginGetResponse(getRequestResult => { },null);
   }
   catch { }
}
 

Комментарии:

1. Я реализовал использование NSMutableURLRequest и NSURLConnection, но, увы, это не совсем работает: я получаю ответ, представляющий собой XML-код междоменной политики. Мой коллега говорит, что сервер предназначен для клиентов silverlight и что я должен сделать сообщение из нескольких частей (?) или использовать поток для выполнения сообщения. (?)

Ответ №1:

Да, вы можете использовать NSURLRequest.

Взгляните на документы. Я полагаю, что есть пример кода, показывающий запрос post.

http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/

Вот полные документы о том, как все это работает.

http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html#//apple_ref/doc/uid/10000165i

Обновить:

Новый проект, созданный Mobiata, имеет открытый исходный код и НАМНОГО проще в использовании для HTTP-запросов.

https://github.com/mobiata/MBRequest