当我尝试通过post将.xml文件上传到网络服务器时,我遇到了错误。如果我使用浏览器提交表单,则这是标题信息。
常规的
Remote Address:10.0.1.90:80
Request URL:http://10.0.1.90/config/
Request Method:POST
Status Code:200 OK
响应标题
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html
Date:Thu, 09 Oct 2003 16:25:41 GMT
Server:nginx/1.0.5
Transfer-Encoding:chunked
请求标题
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Authorization:Basic bWFuYWdlcjptYW5hZ2VyMDE=
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:1500
Content-Type:multipart/form-data; boundary=---- WebKitFormBoundaryEr6fyNPJYuClCcHr
Host:10.0.1.90
Origin:http://10.0.1.90
Referer:http://10.0.1.90/config/
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36
请求有效负载
------WebKitFormBoundaryEr6fyNPJYuClCcHr
Content-Disposition: form-data; name="newconfig"; filename="config.xml"
Content-Type: text/xml
------WebKitFormBoundaryEr6fyNPJYuClCcHr
Content-Disposition: form-data; name="put"
Upload
------WebKitFormBoundaryEr6fyNPJYuClCcHr--
这是我使用的c#代码。
ASCIIEncoding encoder = new ASCIIEncoding();
byte[] data = encoder.GetBytes(serializedObject); // a json object, or xml, whatever...
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
NetworkCredential up = new NetworkCredential("username", "password");
request.Credentials = up;
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8;";
request.Method = "POST";
request.ContentType = "text/xml";
request.ContentLength = data.Length;
request.GetRequestStream().Write(data, 0, data.Length);
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
我不断得到的错误是:"远程服务器返回错误:(405)方法不允许。"
我无法修改运行nginx网站的服务器。
更新的 这是表单html代码,如果它可以帮助任何人帮助我。
<form method="post" enctype="multipart/form-data" action="#">
<fieldset class="quick_create">
<input type="submit" name="delete" value="Reset">
<input type="submit" name="apply" value="Commit">
<input type="submit" name="apply_reload" value="Commit + Reload">
<input type="file" name="newconfig">
<input type="submit" name="put" value="Upload">
</fieldset>
</form>
第二次更新(使用WebClient.UploadFile)
WebClient webClient = new WebClient();
try
{
webClient.Credentials = new NetworkCredential("user", "pass");
webClient.Headers["Content-Type"] = "multipart/form-data";
webClient.Headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
WebRequest serverRequest = WebRequest.Create(url);
serverRequest.Credentials = new NetworkCredential("manager", "manager01");
WebResponse serverResponse;
serverResponse = serverRequest.GetResponse();
serverResponse.Close();
webClient.UploadFile(url, "POST", data);
webClient.Dispose();
webClient = null;
}
catch (Exception error)
{
Console.WriteLine(error.Message);
Console.ReadLine();
}