2013-09-24 2 views
0

У меня есть следующее. Он достигает страницы api, которую я создал в PHP .... yum yum ... нет проблем.Почтовые данные не попадают на мою страницу api

public static async Task<string> GetData(string url, string data) 
    { 
     HttpClient client = new HttpClient(); 
     StringContent queryString = new StringContent(data);    

     HttpResponseMessage response = await client.PostAsync(new Uri(url), queryString); 

     //response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 
     response.EnsureSuccessStatusCode(); 
     string responseBody = await response.Content.ReadAsStringAsync(); 

     return responseBody; 
    } 

Строковые данные представляют собой представление объекта JSON.NET с различными свойствами. На моей странице PHP я рассматриваю одно из этих свойств «имя пользователя». Так скажем, я посылаю следующую информацию:

public class PostContent 
{ 
    public string username { get; set; } 
} 

PostContent data = new PostContent { username = "dooby" }; 

string json = JsonConvert.SerializeObject(postData); 
return PostRequest.GetData(AuthURL, json); 

На моей странице PHP я сделать запрос к сообщению данных $ _POST [ «имя пользователя»] ... и ничего не выходит в ответ. Если я вывожу некоторую случайную строку, чтобы удостовериться, что я обращаюсь к правильной странице, я получаю строку правильно.

enter image description here

Так что данные POST не приходит через ... Что я я здесь делаю неправильно?

ответ

0

Хотя ваш вопрос не очень четко написан, из того, что я могу понять, похоже, что вы отправляете некоторые данные JSON от клиента C# на сервер PHP, а ваш PHP-код не может читать данные из запроса когда он получен от клиента. Это проблема?

Если это так, я думаю, проблема может заключаться в том, что вы не устанавливаете заголовок Content-Type при выполнении запроса на сервер. В документе documentation for the StringContent class указано, что тип содержимого по умолчанию - text/plain. Поскольку вы отправляете данные JSON, вы должны указать тип контента application/json. Возможно, сервер не сможет правильно проанализировать данные, если он не знает, какие данные вы отправляете.

Try инициализации вашей queryString переменную так:

StringContent queryString = new StringContent(data, Encoding.UTF8, "application/json"); 
0

Это, казалось, сделать трюк отлично. Я нашел его на кого-то elses stackoverflow страница: .NET: Simplest way to send POST with data and read response

It works like a charm! I'll make this answer better when I get home 

var pairs = new List<KeyValuePair<string, string>> 
{ 
    new KeyValuePair<string, string>("postdataproperty", "blabla"), 
    new KeyValuePair<string, string>("postdataproperty2", "blabla2"), 
} 

var content = new FormUrlEncodedContent(pairs); 
Смежные вопросы