【发布时间】:2013-03-05 17:51:57
【问题描述】:
您好,我正在尝试执行 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();
}
}
}
错误
收件人参数中提供的值丢失或无效。这 参数必须引用任何电话号码
【问题讨论】:
-
您要发布到哪个服务器?这是特定于供应商的。
-
@DanielA.White ye 先生,您是对的,这是特定于供应商的。我想知道我的请求中的 PostData 有什么问题。
-
@DiskJunky 我认为 Content length 应该与 PostData Length 相同,我错了吗?
-
您应该详细说明您要发布到哪个服务器。它不可能知道它到底在期待什么。