2015-02-05 4 views
0

C#을 사용하여 JSON 게시물을 보냅니다. 요청에서 직접 값을 하드 코딩하면 모든 것이 잘 작동합니다. 하지만 변수의 형태로 보내고 싶지만 실패하고 있습니다. 나는 여러 가지 방법을 시도했지만 어떤 해결책도 찾을 수 없었습니다. ID 필드에서 'num'변수의 값을 172024로 가져 오려고했지만 응답에서 값이 아닌 문자열을 얻습니다. 여기 JSON 개체에서 변수를 전달하는 방법

는 문자열 연결에 대한 대안으로 내 코드

static void Main(string[] args) 
{ 
    //Make a Json request 

    var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://IPaddress/apibxe_json.php"); 

    httpWebRequest.ContentType = "application/json"; 
    httpWebRequest.Method = "POST"; 

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
    { 
     string num; 
     num = Convert.ToString("172024"); 
     Console.WriteLine(num); 

     string json = "[ { \"connection\" : { \"PS\": \"99778\", \"pr\" : \"******\" }}, {\"execute\" : { \"name\" : \"NewAPI\", \"params\" : { \"Action\" : \"NEW\", \"ID\": \"$num\" , \"Dlr\" : \"&&&&&\"}}}]"; 

     streamWriter.Write(json); 
    } 

    //Get the response 
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
    { 
     var responseText = streamReader.ReadToEnd(); 

     JArray jresponse = JArray.Parse(responseText); 

     Console.WriteLine(jresponse); 
    } 
} 
+6

무엇을? 지구에. 문자열 연결은 첫날 물건과 같습니다. CLR 비아 C#과 같은 책을 열면 좋습니다. '\ "PS \": \ ""+ num + "\", \ "pr \" – Will

+0

"CLR via C#"을 (를) 소개하는 텍스트로 사용하는 것이 좋습니다. :-) – stakx

+0

C# 용 JSON 라이브러리 사용 - 몇 가지 예가 있습니다. – Seti

답변

1

, 당신은 당신이 요청 본문에 기록하고있는 JSON을 나타내는 클래스를 만드는 것을 고려하고 A의 대신 있도록 그 직렬화 할 수 있습니다 조금 더 쉽게 작업 할 수 있습니다.

나는 (. 그들은 일부는 청소를 사용할 수 클래스 json2csharp를 사용하여 생성, 그러나 이것은 단지 예이다) 이미 당신을 JSON.NET-- 사용하는 것은 당신이 그 라이브러리와 그렇게 할 방법 것으로 나타났습니다 :

public class Connection 
{ 
    public string PS { get; set; } 
    public string pr { get; set; } 
} 

public class Params 
{ 
    public string Action { get; set; } 
    public int ID { get; set; } 
    public string Dlr { get; set; } 
} 

public class Execute 
{ 
    public Execute() 
    { 
     this.Parameters = new Params(); 
    } 

    public string name { get; set; } 

    [JsonProperty("params")] 
    public Params Parameters { get; set; } 
} 

public class Request 
{ 
    public Request() 
    { 
     this.connection = new Connection(); 
     this.execute = new Execute(); 
    } 

    public Connection connection { get; set; } 
    public Execute execute { get; set; } 
} 

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
{ 
    var request = new Request(); 

    /* Set other properties as well */ 
    request.execute.Parameters.ID = 172024; 

    string json = JsonConvert.SerializeObject(request); 

    streamWriter.Write(json); 
} 
1

코드 싹둑는 (MVC)에 도움이 될 수 있습니다 ....

public JsonResult LoadName(string temp) 
{ 
     var fromBd=temp+" Bangladesh"; 
     return Json(fromBd,JsonRequestBehavior.AllowGet); 
} 

JQuery와 기능이 ....

function(){ 
var temp='From'; 
$.get("/BasicSettings/Ajax/LoadName", { temp: temp}, function (data) { 
      $('span').html(data.fromBd); 
     }); 
} 
+0

코드를 변경하고 작업 중입니다. 도와 줘서 고마워, 정말 고마워. 저는 C#에 익숙하지 않고 한 번에 한 단계 씩 더 배우려고 노력했습니다. 초보자 용 서적이 있으면 초보자 용 서적을 제안하십시오. – user3381098

관련 문제