我正在开发一个项目,要求我POST到远程服务器并将流式响应放到对话框中。除了$http
在每个回复的开头添加一个随机字符这一事实外,所有事情都有效。为了解决这个问题,我试图使用不同的HTTP客户端。我尝试过使用Browserify的http
模块,request-promise
和jQuery,但所有这些模块都只返回Hello, world!
作为响应。
使用jQuery的相关HTTP请求代码:
return new Promise(function (resolve, reject) {
$.post('http://signumd-5b4087ed.lambdavps.svc.tutum.io:3000/run/java', {environment: environment, code: $scope.code})
.done(function (data) {
resolve(data)
}).fail(function (err) {
reject(err)
})
}).then(function (output) {
console.log(output)
return $mdDialog.show({
controller: 'ResultDialogController',
templateUrl: 'partials/result-dialog.html',
parent: angular.element(document.body),
targetEvent: ev,
clickOutsideToClose: true,
locals: {
output: output,
expected: $scope.problem.contents.cases[0].stdout
}
})
}).then(function (answer) {
window.alert(answer)
}).catch(function (err) {
console.error(err)
})
Angular的相关HTTP请求代码:
return $http({
method: 'POST',
url: 'http://signumd-5b4087ed.lambdavps.svc.tutum.io:3000/run/java',
data: {
environment: environment,
code: $scope.code
}
}).then(function (output) {
return $mdDialog.show({
controller: 'ResultDialogController',
templateUrl: 'partials/result-dialog.html',
parent: angular.element(document.body),
targetEvent: ev,
clickOutsideToClose: true,
locals: {
output: output.data,
expected: $scope.problem.contents.cases[0].stdout
}
})
}).then(function (answer) {
alert(answer)
}).catch(function (err) {
console.error(err)
})
半工作的分支(除了无关的字符):https://github.com/ID10T-Errors/signum-workshop-client/tree/gh-pages
答案 0 :(得分:0)
我是个傻瓜
服务器有默认产生" Hello,world!"当没有输入时,发生这种情况是因为我没有Content-Type
标题。