2017-07-26 7 views
-1

イムにノードは、POSTリクエストを送信するために使用して.NETコードイムがあると思われる「createPdf」という名前のコントローラとノードのREST APIに.NETアプリケーションからのPOSTリクエストを送信するJSONポスト本体

を追加ブラケットを追加しますSerializeObjectを使用してjsonオブジェクトを作成し、次にUrlEncodeを使用してjsonをエンコードし、ポストリクエストでそれを送信することです。

Dim postjson As String = JsonConvert.SerializeObject(article) 
Dim request As WebRequest = WebRequest.Create("url") 
request.Method = "POST" 
Dim postData As String = WebUtility.UrlEncode(postjson) 
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData) 
request.ContentType = "application/x-www-form-urlencoded" 
//go off and send the post request 

これは、この形式で有効なJSONを生成するようだ -

{ 
    "source": "le sauce", 
    "subTopic": "le subtopic", 
    "Title": "le title", 
    "Body": "le body", 
    "refs": "le refs", 
    "lastUpdated": "19/12/2016 11:23:56" 
} 

が、私はJSONを送信し、私のノードコントローラに以下のコードでJSONを試してみて、解析する際には、追加のブラケットを追加しているようですジョソンにはコロンが付いています。

ノードコントローラ

var express = require('express'); 
var router = express.Router(); 
var bodyParser = require('body-parser'); 
var fs = require("fs"); 

var wkhtmltopdf = require('wkhtmltopdf'); 

router.use(bodyParser.urlencoded({ extended: true })); 

router.post('/', function(req, res) { 
    console.log(req.body); 
    res.status(200).send('lol'); 
}); 

module.exports = router; 

、これは余分なブラケット、コロン、引用符など何らかの理由はconsole.log(req.body)

{ '{ 
    "source”:”le sauce“, 
    ”subTopic”:”le subtopic“, 
    ”Title”:”le title“, 
    ”Body”:”le body“, 
    ”refs”:”le refs“, 
    ”lastUpdated":"19/12/2016 11:23:56" 
}': '' } 

から出力される無効JSONでありますいくつかの時点でjsonに追加され、jsonが無効になってしまった.Iron側では起こっていないが、Nodeがポストリクエストを処理しようとしたときに起こっているはずだが、

これを解決する方法についてのご意見はありますか?

答えて

0

あなたはJSONを送信する場合、これは正しくありません。

request.ContentType = "application/x-www-form-urlencoded" 

サーバー側でこれをあるよう:

router.use(bodyParser.urlencoded({ extended: true })); 

はっきりあなたはURIエンコード形式を送っていると言いますデータはJSONではなく、body-parserにJSONではなくURIエンコードされたフォームデータをデコードするように指示します。

適切なコンテンツタイプの送信:

request.ContentType = "application/json" 

を...と右のパーサーを使用します。

router.use(bodyParser.json()); 

(あなたはURI-エンコードされた期待のエンドポイントを持っている場合は、複数のパーサを使用することができますフォームデータなどJSONが必要なものbody-parserはコンテンツタイプからそれを把握します)

+0

今働いているいくつかの理由 – scriptss

+0

ためreq.body出力空のJSONオブジェクトを作成、追加のブラケットと、このようなはもう追加されていないが、さらに多くの奇妙な何かが起こっていますjsonでは、引用符のすべてがアポストロフィで置き換えられてjsonを無効にします。 – scriptss

+0

@scriptss:それを受け取るまでにはもうJSONではありません。それはbody-parserの** point **です。あなたの* body *を解析します。 'console.log(req.body)'を実行している場合は、オブジェクトをダンプし、ノードはデフォルトのオブジェクト出力を使用します(例えば、 'object {foo: 'bar'}')。 –

0

コンテンツタイプをapplication/jsonに設定します。 JSONを送信しようとしているのに実際にURLでエンコードされたデータを送信しようとしているため、Nodeはそれを正しくデコードできません。次に、このコード試してみてください。

Dim httpWebRequest As HttpWebRequest = 
(HttpWebRequest)WebRequest.Create("http://url") 
httpWebRequest.ContentType = "application/json" 
httpWebRequest.Method = "POST" 

Dim streamWriter As StreamWriter = new StreamWriter 
(httpWebRequest.GetRequestStream()) 
Dim jsonData As String = "{'source':'lesauce','subTopic':'lesubtopic','Title':'letitle','Body':'lebody','refs':'lerefs','lastUpdated':'19/12/201611:23:56'}" 
streamWriter.Write (jsonData) 
streamWriter.Close() 

Get Response here 
関連する問題