我有以下内容。它到达了我在PHP中设置的api页面...现货。 yum yum ...没有probs。
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页面上,我正在查看其中一个属性“username”。 所以我想发送以下信息:
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 [“username”]发出请求...并且响应中没有任何内容。如果我输出一些随机字符串以确保我正在访问正确的页面,我正确地得到了字符串。
所以POST数据没有通过......我在这做错了什么?
答案 0 :(得分: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");
答案 1 :(得分:0)
这似乎完美地完成了这个伎俩。我在别人的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 );