OStack程序员社区-中国程序员成长平台

标题: c# - Xamarin : iOS won't send punctuation in strings to a web endpoint [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 18:06
标题: c# - Xamarin : iOS won't send punctuation in strings to a web endpoint

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

这是一个示例,我设置了一个类似的端点

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

    [Route("/feedback", "OST")]
    [Route("/feedback/{uuid}/{content}", "OST")]
    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



Best Answer-推荐答案


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

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

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

然后,任何未在 Route 上定义的剩余属性都将作为表单数据进行 POST。

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






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4