【问题标题】:Xamarin POST method not returning correct valueXamarin POST 方法没有返回正确的值
【发布时间】:2019-06-02 14:39:36
【问题描述】:

我在发送 POST 请求和获得响应时遇到问题。我制作了返回一些字符串值的本地 PHP 脚本,但我无法让它与 Xamarin 一起使用。

这是我用来发送请求的方法:

public async Task<string> Post_Request()
{
    var request = new HttpRequestMessage();
    request.RequestUri = new Uri("http://localhost/server.php");
    request.Method = HttpMethod.Post;
    request.Headers.Add("Accept", "application/json");
    var client = new HttpClient();
    HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(continueOnCapturedContext: false);
    if (response.StatusCode == HttpStatusCode.OK)
    {
        return "OK";
    }
    else
    {
        return "BAD!";
    }
}

在调试时,程序不会进入“if (response.StatusCode == HttpStatusCode.OK)”条件下的 if 或 else 代码分支。

这是我的 PHP 脚本:

<?php
return 
"
{
"user":"01",
"name":"ime"
}
"
//echo "OK";
?>

【问题讨论】:

  • localhost 指的是设备|仿真器本身,因此除非您尝试连接到在设备|仿真器上运行但无法工作的 Web 服务器。使用您的 PHP 服务器|PC 正在使用的公共|相同子网 IP 地址。

标签: c# xamarin request


【解决方案1】:

这是我使用的一个示例发布请求。

var objRequest = new CustomerDetailsRequest() {
    customerId = 1
};

string url = $"/api/v1/CustomerDetails";
var requestBody = await Task.Run(() => JsonConvert.SerializeObject(objRequest));
using (var httpClient = new HttpClient())
{
    CustomerDetailsResponse data = new CustomerDetailsResponse();
    try
    {
        httpClient.BaseAddress = new Uri("http://localhost:3000");
        var content = new StringContent(requestBody, Encoding.UTF8, "application/json");
        var result = await httpClient.PostAsync(url, content);
        var response = await result.Content.ReadAsStringAsync();
        data = JsonConvert.DeserializeObject<CustomerDetailsResponse>(response);

        if (result.IsSuccessStatusCode && result.StatusCode == HttpStatusCode.OK)
        {
            return data;
        }

        return null;
    }
    catch (Exception exp)
    {
        return null;
    }
}

让我知道这是否令人困惑

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多