0

嗨,我正在尝试执行 Http Post 请求,但收到错误请求的错误,如果有人可以帮助我,我认为我在请求中做错了什么。

这是请求

     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

这是我的这个请求的代码

        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();
                }
            }

        }

错误

收件人参数中提供的值丢失或无效。该参数必须引用任何电话号码

4

2 回答 2

0

哦,我看到了一个潜在的问题。看起来您正在发送 JSON 对象而不是表单编码值。

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

沿着这些思路尝试一些东西。

于 2013-03-05T18:13:41.123 回答
0

你的界限不匹配。

 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"]
 }
 --------------325343636--

你的边界应该是-(两个连字符)+你的边界。最后一个边界应遵循相同的公式,并在末尾添加 -- (两个连字符)。

在您的示例中,您的结束边界不同,并且边界前面没有额外的两个连字符。

为了进一步澄清,如果您的边界是“边界”,它看起来像这样:

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

 This is my fax
 --a boundary
 Content-Disposition:form-data; name="request";
 {
   "recipients":["7778888"]
 }
 --a boundary--
于 2019-04-26T17:55:50.207 回答