2017-06-27 26 views
0

私は http://ericdev35:7280/persons/persons/ のようなWebサービスのURLとユーザ名とパスワードを提供しています。文字列を静かなwebserviceにC#で投稿する

私は、このWebサービスでポストコールをWPFアプリケーションから作成したいと考えています。サービスに送信する データは、フォーマットの人物の姓と名です: 「FNAME = Abcの& LNAME = XYZ」

にはどうすればC#で、このために電話をかけることができますか?

 HttpWebRequest httpWebRequest = (HttpWebRequest) WebRequest.Create("http://ericdev35:7280/persons/persons/"); 
     httpWebRequest.Method = "POST"; 
     httpWebRequest.ContentType = "application/json"; 
     httpWebRequest.Credentials = new NetworkCredential(username, password); 
     string data = "fname=Abc&lname=Xyz"; 
     StreamWriter writer = new StreamWriter(httpWebRequest.GetRequestStream()); 
     writer.Write(data); 
     writer.Close(); 

をこれは私にエラーを与えるものではありませんが、私は、私が投稿しているデータを見ることができない:ここでは は、私がしようとしているコードです。修正が必要なことはありますか? コンテンツタイプは正しいですか?

+0

https://stackoverflow.com/a/4015346/588734 –

+1

あなたのデータは有効なJsonフォーマットではありません! "{" fname ":" Abc "、" lname ":" Xyz "}"は有効です... – RoJaIt

答えて

0

このメソッドはjsonを投稿します。 その後、応答を取得し、Jsonオブジェクトを逆シリアル化します。

private static string PostJson<T1>(string p_url, string p_json, string p_method, out T1 p_target) 
{ 
    var httpWebRequest = (HttpWebRequest)WebRequest.Create(p_url); 
    httpWebRequest.UseDefaultCredentials = true; 
    httpWebRequest.ContentType = "application/json"; 
    httpWebRequest.Method = p_method; 

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
    { 
     streamWriter.Write(p_json); 
     streamWriter.Flush(); 
     streamWriter.Close(); 
    } 
    HttpWebResponse httpResponse; 
    try 
    { 
     httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
    } 
    catch (WebException ex) 
    { 
     httpResponse = ex.Response as HttpWebResponse; 
    } 

    using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
    { 
     var a_result = streamReader.ReadToEnd(); 

     //If you dont need a Json object delete anything behind here 
     try 
     { 
      p_target = JsonConvert.DeserializeObject<T1>(a_result); 
     } 
     catch { p_target = default(T1); } 
     return a_result; 
    } 
} 
+0

jsonとしてデータを渡す必要があります。次のステートメントは正しいですか? 文字列データ= "fname = Abc&lname = Xyz"; –

+0

文字列データ= "{\" fname \ ":\" Abc \ "、\" lname \ ":\" Xyz \ "}"; – RoJaIt

+0

私はそれを次のように渡しました: " ; 私が得た応答は403禁じられたエラー –

関連する問題