我在使用REST操作时遇到了惊人的情况。
当我在IDE中运行简单的java程序时,我能够创建HTTP请求:201 / Created。成功。服务器接收请求
当我在Runtime环境中放入相同的程序(比如Mule)时,我得到405 / Method not Allowed。失败。服务器没有收到任何内容
当我通过Rest Client(一些mozilla或chrome插件)运行它时,它接受请求201 /创建。成功。服务器接收请求
在该特定网址上,我正在关注允许:
允许:GET,POST
运行时是否存在此问题? 或者在运行环境中要进行的任何设置? 或代码中的问题?
以下是代码:
`URL urlRequest = new URL(url);
HttpURLConnection conn = (HttpURLConnection) urlRequest.openConnection();
conn.setRequestProperty("Host", "10.91.17.170:81");
conn.setRequestProperty("User-Agent", "Mozilla/4.0");
conn.setRequestProperty("Accept", "application/atom+xml;q=0.9,*/*;q=0.8");
conn.setRequestProperty("Accept-Language", "en-us,en;q=0.5");
conn.setRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
conn.setRequestProperty("Keep-Alive", "115");
conn.setRequestProperty("Connection", "keep-alive");
conn.setRequestProperty("Access-Control-Allow-Origin", "*");
conn.setRequestProperty("Content-Type", "application/atom+xml");
conn.setDoOutput(true);
conn.setRequestMethod("POST");
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
wr.writeBytes(requestXML);
wr.flush();
wr.close();
System.out.println("Created Request");
System.out.println("Response Code: "+conn.getResponseCode());
System.out.println("Response Status: "+conn.getResponseMessage());
System.out.println("Response Status: "+conn.getContentType());
System.out.println("Request Method: "+conn.getRequestMethod());
`
无法在谷歌上得到答案。击中和试验但没有成功。
答案 0 :(得分:0)
POST方法经常出现405错误。您可能正在尝试在网站上引入某种输入表单,但并非所有ISP都允许使用必要的POST方法来处理表单。
所有405错误都可以追溯到Web服务器的配置和管理网站内容访问的安全性,因此您的ISP应该很容易解释。
您可以看到详细信息:
jQuery .ajax() POST Request throws 405 (Method Not Allowed) on RESTful WCF