Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api GET请求在Postman-405中工作正常,Java代码不允许_Api_Http_Postman_Okhttp - Fatal编程技术网

Api GET请求在Postman-405中工作正常,Java代码不允许

Api GET请求在Postman-405中工作正常,Java代码不允许,api,http,postman,okhttp,Api,Http,Postman,Okhttp,我正在尝试对以下url执行GET HTTP请求: 它使用Apache或OKHTTP从我的Java代码中被阻止,但每次都在Postman中工作,没有任何额外的头等 我从代码中得到的响应是: Response{protocol=http/1.1,code=405,message=notallowed,url=https://xml.betfred.com/horse-racing-us.xml} 为什么它只在邮递员那里工作,而不在其他地方工作 stringurl=”https://xml.betfr

我正在尝试对以下url执行GET HTTP请求:

它使用Apache或OKHTTP从我的Java代码中被阻止,但每次都在Postman中工作,没有任何额外的头等

我从代码中得到的响应是:

Response{protocol=http/1.1,code=405,message=notallowed,url=https://xml.betfred.com/horse-racing-us.xml}

为什么它只在邮递员那里工作,而不在其他地方工作

stringurl=”https://xml.betfred.com/horse-racing-us.xml";
HashMap headers=新的HashMap();
headers.put(“缓存控制”、“无缓存”);
headers.put(“用户代理”、“Mozilla/5.0(Macintosh;英特尔Mac OS X 10_10_1)AppleWebKit/537.36(KHTML,如Gecko)Chrome/39.0.2171.95 Safari/537.36”);
标题。放置(“连接”、“保持活动”);
headers.put(“接受”、“应用程序/json”);
JSONObject对象=null;
试一试{
object=JSONHelper.readJsonFromUrl(URL,标题);
}捕获(JSONException e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
公共静态JSONObject readJsonFromUrl(字符串urlString,HashMap头)抛出IOException,JSONException{
HttpURLConnection-urlConnection=null;
URL=新URL(URL字符串);
urlConnection=(HttpURLConnection)url.openConnection();
迭代器it=headers.entrySet().Iterator();
while(it.hasNext()){
Map.Entry对=(Map.Entry)it.next();
urlConnection.setRequestProperty(pair.getKey(),pair.getValue());
}
setReadTimeout(10000/*毫秒*/);
setConnectTimeout(15000/*毫秒*/);
urlConnection.setDoOutput(true);
urlConnection.connect();
BufferedReader br=新的BufferedReader(新的InputStreamReader(urlConnection.getInputStream());
StringBuilder sb=新的StringBuilder();
弦线;
而((line=br.readLine())!=null){
sb.追加(第+行“\n”);
}
br.close();
字符串jsonString=sb.toString();
urlConnection.disconnect();
返回新的JSONObject(jsonString);
}

此消息表示不允许使用HTTP 1.1版的GET方法


看起来版本不匹配。当您在浏览器中打开该网站时,它支持HTTP版本2。您可以尝试用OkHttp替换Java的内置
HttpUrlConnection
,因为OkHttp支持HTTP版本2。您必须升级JVM。在我的JVM中(build 1.8.0_241-b07),当我运行此代码段时,选择了HTTP版本2。

此消息表示不允许使用HTTP版本1.1的GET方法


看起来版本不匹配。当您在浏览器中打开该网站时,它支持HTTP版本2。您可以尝试用OkHttp替换Java的内置
HttpUrlConnection
,因为OkHttp支持HTTP版本2。您必须升级JVM。在我的JVM中(build 1.8.0_241-b07),当我运行此代码段时,选择了HTTP版本2。

你能将代码添加到你的问题中吗?添加了代码。谢谢我刚刚尝试了curl,也得到了405,但在浏览器中工作正常。他们一定在检查与用户代理有关的内容。我不认为你的
用户代理
头应用正确。我做了一些测试和测试你的代码对我来说很好。在这个阶段,我唯一能想到的是你在实际代码中的
User Agent
中有一个输入错误。仅供参考,你可以将标题代码缩短为
headers.forEach(urlConnection::setRequestProperty)
如果使用任何最新版本的Java,您可以将代码添加到您的问题中吗?添加了代码。谢谢我刚刚尝试了curl,也得到了405,但在浏览器中工作正常。他们一定在检查与用户代理有关的事情。我不认为您的
用户代理
标题应用正确。我做了一些测试,您的代码最终正常工作在这个阶段,我唯一能想到的是,您的实际代码中的
用户代理
有一个输入错误。仅供参考,如果使用任何最新版本的Java,您可以将标题代码缩短为
headers.forEach(urlConnection::setRequestProperty)