ASIHTTPRequest + WCF POST XML - PullRequest
       2

ASIHTTPRequest + WCF POST XML

0 голосов
/ 01 марта 2011

Я пытаюсь заставить мое приложение отправлять данные в веб-службу WCF RESTful.

На данный момент я не получаю никаких сообщений об ошибках из ASIHTTPRequest, но веб-служба тоже ничего не делает.

Не могли бы вы, ребята, взглянуть на это и посмотреть, можете ли вы что-то заметить?

Xcode

NSURL *url = [NSURL URLWithString:@"http://www.mydomian.com/create"];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

NSData *myPostData = [[NSString        stringWithFormat:@"<Product><Description>desc1</Description><Id></Id><Name>some    body</Name></Product>"] dataUsingEncoding:NSUTF8StringEncoding];

NSMutableData *myMutablePostData = [NSMutableData dataWithData:myPostData];

[request setPostBody:myMutablePostData];

[request setRequestMethod:@"POST"];

[request addRequestHeader:@"Content-Type" value:@"application/xml"];

[request setDelegate:self];

[request startSynchronous];

Webservice

...

открытый класс Product {[DataMember] public string Id {get;задавать;}

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public string Description { get; set; }
}

...

[OperationContract] [WebInvoke (UriTemplate = "/ create", Method = "POST", RequestFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare)] void CreateProduct (Продукт продукта);

...

... CreateProduct ...

myConnection.Open ();

            string insertString = "insert into tbldata (desc,Name) values (@desc,@Name)";
            MySqlCommand myCommand = new MySqlCommand(insertString, myConnection);

            myCommand.Parameters.Add("@desc", MySqlDbType.VarChar, 12);
            myCommand.Parameters.Add("@Name", MySqlDbType.VarChar, 40);

            myCommand.Parameters["@desc"].Value = product.Description;
            myCommand.Parameters["@Name"].Value = product.Name;


            myCommand.ExecuteNonQuery();

1 Ответ

0 голосов
/ 09 марта 2011

Ваш запрос выглядит нормально для меня, но вы можете попробовать протестировать его с помощью другого инструмента, такого как curl из командной строки, чтобы быть уверенным.Вот что можно попробовать:

curl -D headers.txt -X POST -H 'Content-Type:application/xml' -d '<Product><Description>desc1</Description><Id></Id><Name>somebody</Name></Product>' http://www.mydomain.com/create

Проверьте стандартный вывод для тела ответа и headers.txt для заголовков ответов.Вы должны получить то же, что и в своем приложении для iOS.

Что касается ответа на стороне сервера, попробуйте ответить другим кодом состояния или текстом.

...