我无法解码我从JavaScript文件中获取的JSON(处理请求的服务器是用go编写的)
我已经使用以下JavaScript代码发送请求。
function Connect() {
var data = JSON.stringify({
Version: "0.1",
Action: "test",
Data: {}
});
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
if(xhr.status >= 200 && xhr.status < 300) {
console.log(xhr.responseText);
} else {
console.warn(xhr);
}
}
};
xhr.open("Post", "http://localhost:5252", true);
xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
xhr.send(data);
}
据我所知,这应该可以将JSON发送到服务器。 请求由我的服务器接收,但我无法对其进行解码。
func newRequestFromJSON(jsonData io.Reader) (*Request, error) {
// Decode the JSON to the request value.
decoder := json.NewDecoder(jsonData)
var r Request
err := decoder.Decode(&r)
if err != nil {
return nil, e.New(err.Error() + " at " + u.GetFile_line())
}
return &r, nil
}
Request结构如下所示。
type Request struct {
Version string
Action string
Data interface{}
}
io.reader获取request.body作为参数。该守则有效,例如我用firefox的HttpRequester插件发送了同样的东西。
我收到了EOF错误,并说该请求为零。我认为请求的主体是空的,但我不确定。
我在这里缺少什么?
答案 0 :(得分:2)
如果有人遇到同样的问题: 我终于想出了我必须在服务器中做哪些更改才能允许这样的CORS请求。
1. If using Spark DataFrame then ( x and y are DataFrames )
import org.apache.spark.sql.functions.round
val y = x.withColumn("col1", round($"col1", 3))
2. val y = x.rdd.map( x => (x(0)*1000).round / 1000.toDouble )