使用restTemplate消费UTF-16端点

问题描述

我编写了一个旨在使用远程XML服务的客户端应用程序

import numpy as np
import plotly.express as px
import plotly.graph_objects as go
from jupyter_dash import JupyterDash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input,Output

from sklearn.preprocessing import PolynomialFeatures 
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline

from IPython.core.debugger import set_trace

# Load Data
df = px.data.tips()
# Build App
app = JupyterDash(__name__)
app.layout = html.Div([
    html.H1("ScikitLearn: Polynomial features"),dcc.Graph(id='graph'),html.Label([
        "Set number of features",dcc.Slider(id='PolyFeat',min=1,max=6,marks={i: '{}'.format(i) for i in range(10)},value=1,) 
    ]),])

# Define callback to update graph
@app.callback(
    Output('graph','figure'),[Input("PolyFeat","value")]
)

def update_figure(nFeatures):
    
    global model

    # data
    df = px.data.tips()
    x=df['total_bill']
    y=df['tip']

    # model
    model = make_pipeline(PolynomialFeatures(nFeatures),LinearRegression())
    model.fit(np.array(x).reshape(-1,1),y)
    x_reg = x.values
    y_reg = model.predict(x_reg.reshape(-1,1))
    df['model']=y_reg

    # figure setup and trace for observations
    fig = go.Figure()
    fig.add_traces(go.Scatter(x=df['total_bill'],y=df['tip'],mode='markers',name = 'observations'))

    # trace for polynomial model
    df=df.sort_values(by=['model'])
    fig.add_traces(go.Scatter(x=df['total_bill'],y=df['model'],mode='lines',name = 'model'))
    
    # figure layout adjustments
    fig.update_layout(yaxis=dict(range=[0,12]))
    fig.update_layout(xaxis=dict(range=[0,60]))
    #print(df['model'].tail())
    fig.update_layout(template = 'plotly_dark')
    
    return(fig)

# Run app and display result inline in the notebook
app.enable_dev_tools(dev_tools_hot_reload =True)
app.run_server(mode='inline',port = 8040,dev_tools_ui=True,debug=False,dev_tools_hot_reload =True,threaded=True)

此有效负载一切正常:

    RestTemplate restTemplate = new RestTemplate();
    restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory("http://localhost/affettatrice"));

    List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
    Jaxb2RootElementHttpMessageConverter jaxbMessageConverter = new Jaxb2RootElementHttpMessageConverter();
    List<MediaType> mediaTypes = new ArrayList<MediaType>();
    mediaTypes.add(MediaType.ALL);
    jaxbMessageConverter.setSupportedMediaTypes(mediaTypes);
    messageConverters.add(jaxbMessageConverter);
    restTemplate.setMessageConverters(messageConverters);

    Data result = restTemplate.getForEntity("/commands?cmd=get_state",Data.class).getBody();

    System.out.println(result.getVersion());

但原来的有效载荷是

<?xml version="1.0" encoding="UTF-8"?>
<Data>
    <Version>600</Version>
    ...
</Data>

UTF-8的UTF-16实例。对于UTF-16,我有一个例外情况

<?xml version="1.0" encoding="UTF-16"?>
<Data>
    <Version>600</Version>
    ...
</Data>

XML有效载荷可以编码UTF-16还是可以自定义Jaxb2RootElementHttpMessageConverter以也接受UTF-16?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...