javascript服务器无法从我的vb.net前端httpwebrequest进行验证
我已经开发了一个web服务app.js,它可以处理mongodb数据库中的一些产品,从POSTMAN看来一切都很好,我可以做完整的CRUD(获取、发布、更新、删除),用我的vb.net应用程序我可以获取,但无论怎样POST都无法工作,这里需要一些帮助 这是我的模型javascript服务器无法从我的vb.net前端httpwebrequest进行验证,javascript,node.js,vb.net,mongodb,express,Javascript,Node.js,Vb.net,Mongodb,Express,我已经开发了一个web服务app.js,它可以处理mongodb数据库中的一些产品,从POSTMAN看来一切都很好,我可以做完整的CRUD(获取、发布、更新、删除),用我的vb.net应用程序我可以获取,但无论怎样POST都无法工作,这里需要一些帮助 这是我的模型 var mongoose = require('mongoose'); //Plato Schema var platoSchema = mongoose.Schema({ nombre_plato:{ t
var mongoose = require('mongoose');
//Plato Schema
var platoSchema = mongoose.Schema({
nombre_plato:{
type: String,
required: true
},
categoria_plato:{
type: String,
},
sub_categoria_plato:{
type: String,
},
descripcion:{
type: String,
},
fecha_creacion:{
type: Date,
default: Date.now
},
precio_plato:{
type: Number,
},
foto_plato:{
type: String,
},
estado:{
type: String,
},
estado_contorno:{
type: String,
},
contorno:{
type: String,
},
});
var Plato = module.exports = mongoose.model('Plato', platoSchema);
module.exports.addPlato = function(plato, callback){
Plato.create(plato, callback);
}
这是我的服务器模块
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
app.use(bodyParser.json());
Plato = require('./models/plato');
//Connect to mongoose
mongoose.connect('mongodb://MYLANIP:PORT/DATABASE');
var db = mongoose.connection;
//metodo POST
app.post('/api/platos', function(req, res){
var plato = req.body;
Plato.addPlato(plato, function(err, plato){
if(err){
throw err;
}
res.json(plato);
});
});
app.listen(3000);
console.log('Running on port 3000');
下面是vb.net POST方法
Dim HttpWebRequest As WebRequest = WebRequest.Create("http://MYSERVERADDRESS/api/platos")
ServicePointManager.Expect100Continue = False
HttpWebRequest.ContentType = "application/json"
Dim encoding As New UTF8Encoding
Dim bytejson As Byte() = encoding.GetBytes(jsonString)
HttpWebRequest.Method = "POST"
Dim StreamWriter As Stream = HttpWebRequest.GetRequestStream
StreamWriter.Write(bytejson, 0, bytejson.Length)
Dim httpResponse As HttpWebResponse = HttpWebRequest.GetResponse()
Dim streamReader = New StreamReader(httpResponse.GetResponseStream())
RichTextBox1.Text = streamReader.ReadToEnd()
vb.net从服务器得到一个错误407作为响应,服务器因事件而崩溃。js:160 validationerror:Plato validation失败
我知道当服务器试图从vb.net获取数据时会出现某种问题,然后崩溃,但是
如果我从chrome POSTMAN中执行GET-POST-DELETE更新,我会像我所说的那样让它工作得很好,我也可以从vb.net应用程序中执行GET-POST更新,但我不能执行POST,我已经尝试了所有操作,但它拒绝工作。我必须说,如果我尝试使用vb.net服务器和测试服务器,如
它的工作原理也非常完美,因此总结如下:
POSTMAN->POST my server.js一切正常
我的vb.net应用程序POST->Json测试服务器一切正常
但是我的应用程序vb.net POST->my server.js什么都没有
有什么想法吗?提前谢谢看来我已经设法解决了。。所有的问题都是我所不知道的
var platoSchema = mongoose.Schema({
nombre_plato:{
type: String,
required: true
},
categoria_plato:{
type: String,
},
sub_categoria_plato:{
type: String,
},
descripcion:{
type: String,
这是我的mongoose模式的一部分,我在vb.net中的类是
Private _nombre_plato As String
Private _categoria_plato As String
Private _sub_categoria_plato As String
Private _descripcion As String
Private _fecha_creacion As Date
Private _precio_plato As Double
Private _foto_plato As String
Private _estado As String
Private _estado_contorno As String
Private _contorno As String
我的错误或缺乏知识是,当我重构时,会自动生成
Public Property Nombre_plato As String
Get
Return _nombre_plato
End Get
Set(value As String)
_nombre_plato = value
End Set
End Property
Public Property Categoria_plato As String
Get
Return _categoria_plato
End Get
Set(value As String)
_categoria_plato = value
End Set
End Property
Public Property Sub_categoria_plato As String
Get
Return _sub_categoria_plato
End Get
Set(value As String)
_sub_categoria_plato = value
End Set
End Property
etc
etc
etc
正如您所见,通过访问vb.net自动生成的类的属性,将我的小写名称更改为相同的名称,但使用大写首字母,因此它与mongoose模式不匹配。。伙计,我差点被这个弄疯了
希望这也能帮助其他人。得到更新,我减少了数据,只发送项目名称,并将字段从必填改为无,至少我从服务器收到了响应,它给了我在mongodb数据库中自动生成的项目id{“\uu v”:0,“\u id:“587ea609951eeb16a0dec713”}但是它没有注册这个名字。。同样,postman也这么做,它确实注册了名称,这让我觉得vb.net中的编码或json解析有问题。。我使用newtonsoft库解析json,测试服务器再次提交我从vb.net发送的数据