Используя ETag, но код состояния всегда 200, а не 304
Когда я пытаюсь запросить http://graph.facebook.com/me?fields=friends с ETag, я всегда получаю код запроса как 200 каждый раз. Мы сделали два ответа подряд и проверили его. Изменение было в конце, у него был раздел для нумерации страниц и он прикрепил токен доступа. который всегда отличается, поэтому значение ETag также меняется. Я использую Google App Engine для размещения моего приложения. и используя URLFetech, чтобы сделать запрос.
<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>
С уважением,
iDeViL17
1 ответ
Я пытаюсь сейчас с просьбой. Все работы:
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);