2013-09-24 27 views
0

我有以下。它到達了我在PHP中設置的一個api頁面。 yum yum ...沒有probs。發佈數據沒有通過我的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的內容類型。如果服務器不知道您發送的數據類型,則可能無法正確解析數據。

嘗試初始化您queryString變量是這樣的:

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

這似乎很好做的伎倆。我發現它在某人elover 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); 
相關問題