2017-06-23 8 views
2

JSON形式の辞書をWebサービスに送る必要があります(VB.Netアプリケーションから)。POST Dictionary as JSON

以下

コードです:私のWebサービスで

Dim dict As New Dictionary(Of String, String) 
dict.Add("Drinks", "2") 
dict.Add("ID", "1") 
Dim parameters As String = JsonConvert.SerializeObject(dict) 
Dim jsonString As String = "{""Pram"":""" + parameters + """}" 
Dim Uri As New Uri(String.Format("http://***/WebServices/UpdateSQL")) 
Dim data = Encoding.Default.GetBytes(jsonString) 
Dim result_post As String = SendRequest(Uri, data, "application/json", "POST") 

(ASP.NETのC#の)私は、文字列の上に捕獲しようとしています以下のコードのように

public ActionResult UpdateSQL(string Pram) 

私は、エラーコード500を取得しています:内部サーバーエラー。 VBアプリケーションから個々のフィールドを渡そうとしましたが、うまくいきます。私は文字列として辞書をシリアル化し、しようとすると、

public ActionResult UpdateSQL(string SQL, string TableName, string Drinks, string ID) 

それだけだ:私は個々のフィールド

Dim jsonString As String = "{""SQL"":""" + sSQL + """," & 
          """TableName"":""" + tableName + """," & 
          """Drinks"":""""2"",""ID"":""1""}" 

作品は絶対に罰金送信され、コードの以下のようにWebサービスに捕獲されている上記のJSON文字列を送信する場合、以下のコードがあります送信すると、内部サーバーエラーが発生します。 私はsomething.Thanks

+0

完全なエラーメッセージをデバッグして投稿する可能性がありますか?また、 '' jsonString'に '' 'の' 'parameters 'を' '完全なオブジェクトとしてシリアライズする理由はありません。現在のバージョンでは文字列で表されるオブジェクトになります。 – Icepickle

+0

@Icepickle Thanksあなたの提案はトリックでした。「少なくともそれは私のWebサービスコードに当たっています。しかし、Pramの値が "null"になりました。 パラメータ: "{" "飲み物" ":" "2" "、" "ID" ":" 1 ""} " jsonString:" {"" Pram "": 私のWebサービスでは、Pramの値は何とかnullです。あなたはアドバイスをお願いします。何が問題なのでしょうか。ありがとう。 – Gaurav

+0

これは驚くことではありませんが、jsonオブジェクトを送信しています。これは、 'SQL'、' TableName'、 'Drinks'および' ID'というプロパティを持つオブジェクトを含む 'Pram'プロパティを持つオブジェクトを期待していると仮定します。 – Icepickle

答えて

2
Dim dict As New Dictionary(Of String, String) 
     dict.Add("Drinks", "2") 
     dict.Add("ID", "1") 
     Dim parameters As String = JsonConvert.SerializeObject(dict, Formatting.None) 
     Dim Uri As New Uri(String.Format("http://localhost:60627/home/test/")) 
     Dim webClient As New WebClient() 
     Dim resByte As Byte() 
     Dim resString As String 
     Dim reqString() As Byte 
     webClient.Headers("content-type") = "application/json" 
     Dim senddata As Object = JsonConvert.SerializeObject(New With {Key .param = parameters}).ToString() 
     reqString = Encoding.Default.GetBytes(senddata) 
     resByte = webClient.UploadData(Uri, "post", reqString) 
     resString = Encoding.Default.GetString(resByte) 

最初の変更連結の このタイプの行方不明です場合はご連絡ください:それはのために " "{" "" プラム "" +パラメータ+を "" ""}"リトル苦しみを作る。

サーバープロパティに送信されないデータ問題は、データが適切にシリアル化されていないことを示すEscapse Sequenceです。

は、上記において、私は

Dim parameters As String = JsonConvert.SerializeObject(dict, Formatting.None) 

のためにコードを変更するには、データを変更します

{ "ドリンク": "2"、 "ID": "1"}

次のシリアライゼーションを変更する

{"param" : "{\" ドリンク\ ":\" 2 \」、\ "IDの\":\ "1 \"} "}

が、データ送信のあなたのSerlizationがある

{" PARAM ":" { "ドリンク": "2"、 "ID": "1"} "}

ので、データは、私はそれがワーキングファインだきちんとチェックして適切に enter image description here

を送信していません....

+0

ありがとうございます。これはうまくいった。私は最後の2日間から苦労していた。 – Gaurav