2013-10-21 9 views
1

json API에 데이터를 게시하려고합니다. 이것은 내 코드가 어떻게 보이는지입니다. 그것은 서버에서 오류를 반환, 얘들 아 거기서 내가 json 문자열로 모든 것을 보내고 그 하나의 매개 변수는 JSON stirng입니다 매개 변수를 게시해야한다고 말하고있다. 즉. 아래와 같은 문자열을 포함해야 contact_attributes :하나의 JSON 문자열에 여러 매개 변수 게시

"{\"이름 \ : 리 \ ", \"성 "\"\ "\"더디 \ ", \"passport_number \ "\ "00000020 \", \ "unique_identifier \": \ "7353280000000020 \", \ "msisdn \": \ "27829042259 \", \ "bank_account_number \": null, \ "bank_account_br anch_code \": "bank_account_branch_name의 \"널 (null), \ "bank_detai ls_required \"거짓, \ "membership_number의 \"널 (null), \ "bank_account_b ank_id의 \"널 (null), \ "bank_account_account_type_id \"널 (null), \ "bank_accou nt_initials \" : null, \ "bank_account_surname \": null, \ "bank_account_p assport_number \": null, \ "date_of_birth \": null, \ "debit_day \": null, \ "con tract_sale_date의 \ "널 (null), \"CONTRACT_START_DATE의 \ "널 (null)}는"나는 완전히 혼란 스러워요

는 사람이 내가이 작업을 수행 할 수있는 방법을 알고 않습니다.

public class JsonSaleData 
    { 
     [DataMember] 
     public string contact_attributes { get; set; } 
     [DataMember] 
     public string campaign_uuid = "9d119cce-25ea-46bc-b7bc-cba7e8323e91"; 
     [DataMember] 
     public string user_credentials = "OCPdNbeltviij8C1RLcf"; 
     [DataMember] 
     public string license_id = "1"; 

    } 

private string PostSaleToClient(string url, JsonSaleData _SaleData) 
     { 


      string strResult = ""; 
      try 
      { 
       ASCIIEncoding encoding = new ASCIIEncoding(); 


       System.Net.HttpWebRequest httpWebRequest = (HttpWebRequest)System.Net.WebRequest.Create(url); 
       httpWebRequest.Method = "POST"; 
       httpWebRequest.ContentType = "application/json; charset=utf-8"; 


       DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(JsonSaleData)); 
       MemoryStream ms = new MemoryStream(); 
       ser.WriteObject(ms, _SaleData); 
       ms.Position = 0; 
       String json = Encoding.UTF8.GetString(ms.ToArray()); 


       StreamWriter streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()); 
       streamWriter.Write(json); 
       streamWriter.Flush(); 
       streamWriter.Close(); 

       System.Net.HttpWebResponse httpWebResp = (HttpWebResponse)httpWebRequest.GetResponse(); 
       using (var streamReader = new StreamReader(httpWebResp.GetResponseStream())) 
       { 
        strResult = streamReader.ReadToEnd(); 
       } 

       return strResult; 

      } 
      catch (Exception ex) 
      { 
       string e = ex.Message; 
      } 

      return strResult; 


     } 
+0

httpRequest의 문자열에 쓰기 위해 매개 변수를 추가해야합니다 (문자열 postData = "data ="+ jsonString; . 그 다음 게시물 데이터 문자열을 바이트 – Izikon

+0

에 입력 한 다음 문자열로 변환 한 다음 서버 측으로 전송하십시오. 그런 다음 reg-ex –

+0

안녕하세요 Ramesh를 사용하여 값을 가져옵니다. 반응 해줘서 고마워.판매 세부 사항을 게시하는 내 고객은 내 문자열을 볼 수 있지만 나는 json 문자열로 모든 것을 제출한다고 불평하고 있습니다. 그들은 모든 매개 변수가 마지막 매개 변수에 Json 문자열을 포함해야한다고 말합니다. 이것이 무슨 뜻인지 아는가? – Issey

답변

1

시도를 CSHARP 클래스를 생성하고 특정 객체 직렬화를 사용 ... 권리입니다.

private string ConvertToJSON(objType obj) 
    { 

string sJSON = "{"; 

try { 
    AppendToJSON(ref sJSON, "obj1Name", obj.obj1); 
    AppendToJSON(ref sJSON, "obj2Name", obj.obj2); 
    AppendToJSON(ref sJSON, "obj3Name", obj.obj3); 
    AppendToJSON(ref sJSON, "obj4Name", obj.obj4); 

    return sJSON.Substring(0, sJSON.Length - 1) + "}"; 

} catch (Exception ex) { 
    return ""; 
} 
} 
private void AppendToJSON(ref string byValJSON, string Name, string Value) 
    { 
byValJSON = byValJSON + "\"" + Name + "\":\"" + Value + "\","; 
    } 

그리고 문자열을 서버에 게시하십시오. 후에 .NET 코드를 사용

using System.Web; 

public class AttributesHandler : IHttpHandler 
{ 

public void ProcessRequest(System.Web.HttpContext context) 
    { 
string JSON = null; 
string timeOut = null; 

timeOut = System.Web.HttpContext.Current.Server.ScriptTimeout; 
try { 
    System.Web.HttpContext.Current.Server.ScriptTimeout = 600; 
    System.Web.HttpContext.Current.Response.ContentType = "text/javascript"; 
    System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; 
    JSON = ConvertToJSON(obj); 
    System.Web.HttpContext.Current.Response.Write(JSON); 

    System.Web.HttpContext.Current.Server.ScriptTimeout = timeOut; 

} catch (Exception ex) { 
} 

    } 
    } 

전화 : 여기

string Url = ""; 
Url = "http://xxxxxxxxxxxxxx/AttributesHandler.ashx?cd=xx"; 
object @out = null; 
try { 
Net.WebClient webclient = new Net.WebClient(); 
webclient.UseDefaultCredentials = true; 
@out = System.Text.Encoding.ASCII.GetString((webclient.DownloadData(Url))); 
} catch (Exception ex) { 
//out = ex.InnerException.ToString 
} 

그들은 단지 문자열로 응답을 얻을 것이다.

자바 스크립트 Ajax 사용.

$.ajax({ 
    type: "GET", timeout: 60000, cache: false, dataType: "jsonp", url: "http://xxxxxxxxxxxxxx/AttributesHandler.ashx?cd=xx"   
    success: function (response) { 
     objAttributes = response.Attributes; //in object formate 
       if (objCardAttributes != null) { 
     //can process the objects 
       } 
       __doPostBack('upToolkit',); 
      }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     var sReturn = "Please close the browser and relaunch "; 
     if (textStatus != null) { sReturn += " Details: (" + textStatus + ")"; } 
     if (errorThrown != null) { sReturn += " Description: (" + errorThrown.Description + ")"; } 
     __doPostBack('upToolkit', sReturn); 
    } 
}); 
+0

안녕하세요 Jaya 많은 응답 주셔서 감사합니다, 귀하의 메서드를 사용하여 문자열을 생성하려면 내 코드를 변경 한, 그것은 내가 여전히 같은 오류가 발생하고있는 방식보다 훨씬 깔끔한 방법입니다. HTTP 오류 500 내부 서버 오류입니다. 내 세부 정보를 게시하는 내 고객은 내 문자열을 볼 수 있지만 모든 매개 변수가 마지막 매개 변수에 Json 문자열이 포함되어 있어야하는 문자열로 모든 것을 제출한다고 불평하고 있습니까? 이것이 무슨 뜻인지 아는가? – Issey

+1

함수의 반환 형식이 문자열처럼 보이고 내 대답이 업데이트됩니다. – Jay

+0

감사합니다 자야 .. 나는 당신의 ConvertToJSON 방법을 사용하고 그것이 마침내 작동하도록 얻었고, 나는 완전히 틀린 json 문자열을 만들었다. – Issey

0

당신의 JSON과 POCO ... 그것은이 경우 POCO로 번역 아닌 JSON을 server..but 데이터를 전송하는 여러 매개 변수를 게시 할 필요가 없습니다 일치하지 않는 것은 문제

입니다

"{ \ "이름 \": \ "성"\ "Duddy \", \ "여권 번호 \": \ "00000020 \", \ "unique_identifier \": \ "7353280000000020 \", \ " \ "bank_account_br anch_code \": null, \ "bank_account_branch_name \": null, \ "bank_detai ls_required \": false, \ "membership_number \": null, \ "bank_account_account_type_id \": null, \ "bank_accou nt_initials \": null, \ "bank_account_surname \": null, \ "bank_account_p assport_number \": null, \ "date_of_birth \", \ "bank_account_b ank_id \ : 뉴 LL, \ "debit_day의 \"널 (null), \ "사기꾼 tract_sale_date \"널 (null), \ "CONTRACT_START_DATE의 \"

www.json2csharp.com에 가서는 null} "

확인 ... 당신의 JSON을 구문 분석하지 않습니다 참조 당신의 JSON은

다음이 사이트는 다음과 같은 기능을 사용하여 JSON 문자열로,를 처리 할 수 ​​

관련 문제