utf8字符串制动是Web服务功能的一种方式

时间:2019-07-10 07:32:57

标签: http web unicode service utf

将utf8数据传递到Web服务时,数据中断,并且在每个文本块之后(总是在同一位置)带有奇怪符号的函数到达函数。 这个问题不会总是发生。 当添加更改字符串长度的字符时,问题消失了。

仅当发送utf8字符时才会发生此问题。发送英文字母时,不会出现问题

示例: 这是我发送的字符串(作为常规字符串,而不是xml)

     string string_to_send="<API><METADATA id="METADATA"><SITE>sapir</SITE> 
       <SESSION_ID>52CA5BF6-472B</SESSION_ID><READER_ID></READER_ID> 
       <LANG_ID>HEB</LANG_ID> <LANG_UI_ID>HEB</LANG_UI_ID><ITEM> 
       <ITEM_ID>1234</ITEM_ID><update><FIELD lif ="SH2" collector_lif="0"  
        collector_val="0"  old_val="N" new_val="N"/><FIELD lif="TA" collector_lif="0"  
        collector_val="0"  old_val=""  
new_val="טטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטט 
טטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטט 
       טטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטטט"/>
        </update></ITEM><IDEASTATE></IDEASTATE></METADATA></API>";

这是我将数据发送到Web服务中的功能的方式:

 ideaCatApi.idea_edit_item(string_to_send);

我对Web服务有服务参考: 这是Web配置中的配置

<system.serviceModel>
<bindings>
    <basicHttpBinding>
        <binding name="idea_api_cat"  />
    </basicHttpBinding>
</bindings>
<client>
    <endpoint 
       address="http://my_ip/ws/services/idea_api_cat_service"
       binding="basicHttpBinding" bindingConfiguration="idea_api_cat"
       contract="API_cat_idea.idea_api_cat_service" 
       name="idea_api_cat_service" />
</client>
</system.serviceModel>

我从本地计算机运行此代码-Windows 10 到服务器-Windows Server 2012 R2

我尝试检查Web服务功能是否可以制动文本,但其开发人员表示他使用奇怪的符号来获取文本

如果出现编码问题,我希望字符串总是刹车, 我想进入一种状态,即字符串将进入没有奇怪符号的Web服务功能

  1. 我缺少标题吗?
  2. 我尝试编码c#字符串,但没有帮助
  3. 还有其他想法会导致问题吗?

非常感谢您

我尝试添加内容类型标头,但没有帮助。所以现在我的代码如下:

using (new OperationContextScope(ideaCatApi.InnerChannel))
                {
                    HttpRequestMessageProperty requestMessage = new HttpRequestMessageProperty();
                    requestMessage.Headers["Content-Type"] = "text/html;charset=utf-8";
                    OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = requestMessage;
                    xmlString = ideaCatApi.idea_edit_item(sb.ToString());
                    response = parseResult(xmlString);
}

0 个答案:

没有答案