#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.
Вот полные документы о том, как все это работает.
Обновить:
Новый проект, созданный Mobiata, имеет открытый исходный код и НАМНОГО проще в использовании для HTTP-запросов.