2013-03-05 2 views
0

안녕하세요 저는 Http Post 요청을하려고하고 있지만 잘못된 요청에 대한 오류가 발생하는 경우 어떤 사람이 나에게 도움이 될 수 있다면 요청이 잘못되었다고 생각합니다. Boundry Error Bad Request가있는 Http Post 요청

이것은

 try 
      { 
      String Token = "mytoken"; 
      ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); 
      HttpWebRequest httpWReq2 = (HttpWebRequest)WebRequest.Create("https://domainname/uapi/faxes/@me/0014*100/?accessRequestToken=" + Token); 

      ASCIIEncoding encoding2 = new ASCIIEncoding(); 
      string postData2 = 
      "------------325343636" + Environment.NewLine + 
      "Content-Disposition:form-data; name=\"files\";filename=\"/path/to/file/fax.txt\";" + Environment.NewLine + 
      "Content-Type:application/octet-stream;" + Environment.NewLine + 
      "This is my fax" + Environment.NewLine + 
      "------------325343636" + Environment.NewLine + 
      "Content-Disposition:form-data; name=\"request\";" + Environment.NewLine + 
      "{" + Environment.NewLine + 
      "\"recipients\":[\"111111\"];" + Environment.NewLine + 
      "}" + Environment.NewLine + 
      "------------325343636"; 

      byte[] data2 = encoding2.GetBytes(postData2); 
      httpWReq2.Method = "POST"; 
      httpWReq2.ContentType = "multipart/form-data; boundary=------------325343636"; 
      httpWReq2.KeepAlive = true; 
      httpWReq2.UserAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"; 
      httpWReq2.ContentLength =data2.Length; 
      httpWReq2.Host = "hostname"; 
      string result2 = ""; 

      Stream dataStream2 = httpWReq2.GetRequestStream(); 
      dataStream2.Write(data2, 0, data2.Length); 
      dataStream2.Close(); 
      WebResponse response2 = httpWReq2.GetResponse(); 
      HttpWebResponse responce3 = (HttpWebResponse)httpWReq2.GetResponse(); 
      dataStream2 = response2.GetResponseStream(); 
      // Open the stream using a StreamReader for easy access. 
      StreamReader reader2 = new StreamReader(dataStream2); 
      // Read the content. 
      string responseFromServer2 = reader2.ReadToEnd(); 
      } 

      catch (Exception ex) 
     { 
      WebException ex2 = (WebException)ex; 
      if (ex2.Status == WebExceptionStatus.ProtocolError) 
      { 
       WebResponse resp = ex2.Response; 
       using (Stream respstream = resp.GetResponseStream()) 
       { 
        StreamReader reader = new StreamReader(respstream); 
        String finalerror = reader.ReadToEnd(); 
       } 
      } 

     } 

오류

값이 recipie 공급이 요청에 대한 내 코드 요청

 POST /uapi/faxes/@me/0003*210 HTTP/1.1 
    HOST uapi.voipnow.com 
    Content-Length:469 
    Content-Type: multipart/form-data; boundary=------------325343636 
    ------------325343636-------- 
    Content-Disposition:form-data; name="files"; filename="/path/to/file/fax.txt" 
    Content-Type;application/octet-stream 

    This is my fax 
    ------------325343636 
    Content-Disposition:form-data; name="request"; 
    { 
     "recipients":["7778888"] 
    } 
    ------------3253436360 

입니다 nts 매개 변수가 없거나 잘못되었습니다. 매개 변수는 모든 전화 번호를 참조해야합니다.

+0

게시하려는 서버는 무엇입니까? 이것은 공급 업체에 따라 다릅니다. –

+0

@ DanielA.White ye sir, 네 말이 맞아, 이것은 벤더에 따라 다르다. 내 요청에서 내 PostData에 어떤 문제가 있는지 알고 싶습니다. – Hiren

+0

@DiskJunky 콘텐츠 길이가 PostData Length와 같아야한다고 생각합니까? – Hiren

답변

0

오 잠재적 인 문제점이 있습니다. 폼으로 인코딩 된 값 대신 JSON 객체를 보내는 것처럼 보입니다.

------------325343636 
Content-Disposition:form-data; name="request"; 
recipients=7778888 
------------3253436360 

이러한 라인을 따라 뭔가를 시험해보십시오.

+0

그래서 내 코드를 변경하려면 "{"+ Environment.NewLine + "받는 사람 : 111111"+ Environment.NewLine + "}"+ Environment.NewLine +이 시도해야하지만 여전히 샘 오류가 발생합니다 – Hiren

+0

@Hiren 내가 필요합니다 API로부터의 예제 요청 –