菜鸟教程小白 发表于 2022-12-12 18:06:23

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


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

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

<pre><code>    public class FeedbackDTO
    {
      public bool postResult { get; set; }
    }

   
   
    public class GiveFeedback : IReturn&lt;FeedbackDTO&gt;
    {
      public string Uuid { get; set; }
      public string Content { get; set; }
    }
</code></pre>

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

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

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

<pre><code>      return (await JsonWebService.PostAsync(new GiveFeedback
      {
            Uuid = myUuid,
            Content = &#34;Will this work? Lets see&#34;
      })).postResult;
</code></pre>

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

<p>任何想法为什么会发生这种情况?</p>

<p>如果有帮助,我在 Xamarin 中使用的客户端是 <code>ServiceStack.JsonServiceClient</code></p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果您正在执行 POST,您肯定不想将您发送的内容作为路由的一部分 - url 应该只用于识别资源,而任何内容都应该只在请求中发送 body 。 </p>

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

<pre><code>
public class GiveFeedback : IReturn&lt;FeedbackDTO&gt;
{
    public string Uuid { get; set; }
    public string Content { get; set; }
}
</code></pre>

<p>然后,任何未在 Route 上定义的剩余属性都将作为表单数据进行 POST。</p></p>
                                   
                                                <p style="font-size: 20px;">关于c# - Xamarin : iOS won&#39;t send punctuation in strings to a web endpoint,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34735551/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34735551/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: c# - Xamarin : iOS won&#39;t send punctuation in strings to a web endpoint