Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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
Java 使用ETag,但状态代码始终为200而不是304_Java_Facebook_Google App Engine_Etag_Required - Fatal编程技术网

Java 使用ETag,但状态代码始终为200而不是304

Java 使用ETag,但状态代码始终为200而不是304,java,facebook,google-app-engine,etag,required,Java,Facebook,Google App Engine,Etag,Required,当我试图请求 对于ETag,我每次都会得到200的请求代码。 我们做了两个背对背的回复,并进行了检查。最后的更改是,它有一个用于分页的部分,并附加了一个访问令牌。这总是不同的,因此ETag值也会改变。 我正在使用谷歌应用程序引擎来托管我的应用程序。并使用urlfeetech发出请求 <code> String ETag = FBUser.getProperty("ETag").toString();<br> String s="https://graph.faceboo

当我试图请求 对于ETag,我每次都会得到200的请求代码。 我们做了两个背对背的回复,并进行了检查。最后的更改是,它有一个用于分页的部分,并附加了一个访问令牌。这总是不同的,因此ETag值也会改变。 我正在使用谷歌应用程序引擎来托管我的应用程序。并使用urlfeetech发出请求

<code> 
String ETag = FBUser.getProperty("ETag").toString();<br>
String s="https://graph.facebook.com/me?fields=friendlists&access_token=" + facebookSignedRequest.getOauth_token();<br>
URL u = null;<br>
try {<br>
u = new URL(s);<br>
} catch (MalformedURLException e) 
{
e.printStackTrace(out1);}<br>           
FetchOptions options = FetchOptions.Builder.withDefaults();<br>
HTTPRequest req = new HTTPRequest(u,HTTPMethod.GET,options);<br>
req.addHeader(new HTTPHeader("If-None-Match", ETag));<br>
URLFetchService service = URLFetchServiceFactory.getURLFetchService();<br>
HTTPResponse res = null;<br>
try 
{res = service.fetch(req);} <br>
catch (IOException e) { e.printStackTrace(out1);}<br>

String newETag="";<br>
List<HTTPHeader> Head = res.getHeaders();<br>
for(int i=0;i < Head.size();i++)<br>
{
if("ETag".equals(Head.get(i).getName()))<br>
{
   newETag=Head.get(i).getValue();<br>
   out1.println("new ETag : " + newETag);<br>
   out1.println("ETag" + ETag);<br>
}
}
if(res.getResponseCode() == 304)<br>
{ 
  return false;<br>
}else
{
FBUser.setProperty("ETag", newETag);<br>
datastore.put(FBUser);<br>
return true;<br>
}
</code>

字符串ETag=FBUser.getProperty(“ETag”).toString()
字符串s=”https://graph.facebook.com/me?fields=friendlists&access_token=“+facebookSignedRequest.getOauth_token()
URL u=null
试试{
u=新的URL;
}捕获(格式错误) { e、 printStackTrace(out1);}
FetchOptions=FetchOptions.Builder.withDefaults()
HTTPRequest req=新的HTTPRequest(u,HTTPMethod.GET,options)
请求addHeader(新的HTTPHeader(“如果无匹配项”,ETag))
URLFetchService=URLFetchServiceFactory.getURLFetchService()
HTTPResponse res=null
尝试 {res=service.fetch(req);}
catch(ioe){e.printStackTrace(out1);}
字符串newETag=“”
List Head=res.getHeaders()
对于(int i=0;i { if(“ETag”.equals(Head.get(i).getName())
{ newETag=Head.get(i.getValue();
out1.println(“新ETag:+newETag”);
输出1.println(“ETag”+ETag);
} } 如果(res.getResponseCode()==304)
{ 返回false;
}否则 { FBUser.setProperty(“ETag”,newETag);
datastore.put(FBUser);
返回true;
}
问候,

iDeViL17

我现在带着请求尝试。所有工程:

https://graph.facebook.com/me/friends?access_token=...
第一个请求

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet get = HttpGet(url);
HttpResponse = httpClient.execute(get);   
Header[] headers = httpResponse.getHeaders("ETag");   
if (headers != null && headers.length() > 0)
   etags = headers[0].getValue();
第二项请求:

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet get = HttpGet(url);
get.addHeader("If-None-Match", etags);
HttpResponse = httpClient.execute(get);   

如果ETag发生变化,那么您将无法获得304。这就是我无法理解ETag发生变化的原因。您必须向我们展示相关代码。即使我尝试使用RESTClient加载项,我也会遇到同样的问题。此外,我还尝试了Firebug和ModifyHeaders附加组件,正如这里提到的,但同样的问题。我在每个请求中收到200个响应代码,即使我正确设置了头。有什么帮助吗?