gpt4 book ai didi

c# - Xamarin : iOS won't send punctuation in strings to a web endpoint

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:55:51 25 4
gpt4 key购买 nike

非常奇怪的问题,我将 ServiceStack 用作 Web API,并且我设置了一个标准端点,我应该能够将字符串发布到该端点。但是,在我的 iOS 设备上,我无法发送带有任何标点符号的字符串。有些只会让应用程序完全崩溃,其他的(例如问号)会截断其后的所有文本。

这是一个例子,我有一个类似于此的端点设置

    public class FeedbackDTO
{
public bool postResult { get; set; }
}

[Route("/feedback", "POST")]
[Route("/feedback/{uuid}/{content}", "POST")]
public class GiveFeedback : IReturn<FeedbackDTO>
{
public string Uuid { get; set; }
public string Content { get; set; }
}

所以如果我发布到端点,我会像这样将它保存到数据库

            await Commons.MobileService.GetTable<Feedback>().InsertAsync(new Feedback
{
Uuid = uuid,
Content = content,
Date = DateTimeOffset.UtcNow
});
return true;

现在只使用一个基本的客户端,例如 Postman 来发出 Http 请求,我可以发送一个看起来像 '.../api/feedback?Uuid=something&Content=这样的请求吗?让我们看看” 使用 Postman 或其他客户端可以正常工作,但在我的 Xamarin 代码中,当我这样发布时

        return (await JsonWebService.PostAsync(new GiveFeedback
{
Uuid = myUuid,
Content = "Will this work? Lets see"
})).postResult;

? 之后的所有内容都将被截断,因此唯一保存到数据库的是Will this work。非常奇怪的问题,因为常规的 http 请求客户端将发送整个字符串,但我在 Xamarin 中使用的特定 JSON 海报似乎在特定标点符号后切断了所有内容。

知道为什么会这样吗?

如果有帮助,我在 Xamarin 中使用的客户端是 ServiceStack.JsonServiceClient

最佳答案

如果您正在执行 POST,您肯定不想将要发送的内容作为路由的一部分 - url 应该只用于标识资源,而任何内容都应该只在请求中发送 body 。

要做到这一点,只需完全删除不合适的路线:

[Route("/feedback", "POST")]
public class GiveFeedback : IReturn<FeedbackDTO>
{
public string Uuid { get; set; }
public string Content { get; set; }
}

然后任何未在路由上定义的剩余属性都将作为表单数据发布。

关于c# - Xamarin : iOS won't send punctuation in strings to a web endpoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34735551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com