On 2 April 2013 22:28, S.L <simpleliving...@gmail.com> wrote: > Thanks Stephen .I completely agree with you , I am just accessing publicly > available data , one thing that I would like to mention though is that I > get the following warning every time this happens . > > *Invalid cookie header: "Set-Cookie: ". Cookie name may not be empty*. > > Even though I have set a lenient cookie -policy as illustrated here in > section 3.5 . > > > http://hc.apache.org/httpcomponents-client-ga/tutorial/html/statemgmt.html#d4e777 > > > Even a lenient cookie policy cannot allow a cookie with no name.
Sounds like the server is having problems processing your request and is returning invalid HTTP headers as a result. I suggest you capture the headers and check. > > > On Tue, Apr 2, 2013 at 4:19 PM, Stephen J. Butler > <stephen.but...@gmail.com>wrote: > > > This really doesn't sound like a problem with HttpClient. Rather, an > issue > > with Walmart's servers. Maybe you're querying the server too often and > > they're rate limiting you. Or if the same pattern always works in a > browser > > then they're sniffing your UserAgent and doing something different. > > > > In any event, if this is an approved API for Walmart.com, you need to > > contact them. Or just cache the response yourself in the code and use a > > cached value when you get a 404. There's nothing wrong with HttpClient. > > It's doing exactly what the server told it to do. > > > > > > > > On Tue, Apr 2, 2013 at 3:12 PM, S.L <simpleliving...@gmail.com> wrote: > > > > > Stephen, > > > > > > Thanks, I now checked the reason phrase and it returns "Not Found" > when I > > > get a non gzip page not found error and an OK when I successfully get a > > > gzip file download. As I said earlier in multiple iterations , the > first > > > one is successful almost all the time and any subsequent request after > > > that can fail. Is there any way I can "stick" to the fist successful > > server > > > instance using the HttpClient , is there any way around ? Thanks for > > your > > > help. > > > > > > > > > On Mon, Apr 1, 2013 at 11:48 PM, Stephen J. Butler < > > > stephen.but...@gmail.com > > > > wrote: > > > > > > > I notice you aren't checking your status code. Error response have a > > > > body/response entity too. Take a look at > > > > response.getStatusLine().getStatusCode() and > getStatusReasonPhrase(). I > > > bet > > > > the server is limiting you in the instances where you're seeing > > > non-gziped > > > > content. > > > > > > > > > > > > On Mon, Apr 1, 2013 at 10:42 PM, S.L <simpleliving...@gmail.com> > > wrote: > > > > > > > > > Hi All, > > > > > > > > > > I use the following code and run the method multiple times, a few > > > times I > > > > > get a response in gzip which is what I expect and a few time I get > a > > > > > response that is completely different(non Gzip and html format) > > > .However > > > > if > > > > > I download the same URL multiple times using Mozilla or IE I > > > consistently > > > > > get the same GZIP response , Is this an error with the server I am > > > trying > > > > > to reach to , or do I need to set parameters to get a consistent > > > > response ? > > > > > > > > > > Thanks. > > > > > > > > > > The URL I am trying to download is * > > > > > http://www.walmart.com/navigation6.xml.gz* , can you please let me > > > know > > > > ? > > > > > Thanks > > > > > > > > > > > > > > > > > > > > > > > > > public static byte[] dowloadURL(URL urlToDownload) { > > > > > > > > > > InputStream iStream = null; > > > > > byte[] urlBytes = null; > > > > > > > > > > try { > > > > > > > > > > //HttpClient httpClient = new HttpClient(); > > > > > org.apache.http.client. > > > > > HttpClient httpClient = new DefaultHttpClient(); > > > > > > > > > > > > > > > HttpGet httpget = new > HttpGet(urlToDownload.toString()); > > > > > > > > > > HttpResponse response = httpClient.execute(httpget); > > > > > > > > > > iStream = response.getEntity().getContent(); > > > > > > > > > > urlBytes = IOUtils.toByteArray(iStream); > > > > > String responseString = new String(urlBytes); > > > > > System.out.println(" >>> The response string for " > > > > > +urlToDownload.toString()+ " is " +responseString); > > > > > > > > > > } catch (IOException e) { > > > > > System.err.printf("Failed while reading bytes from %s: > > %s", > > > > > urlToDownload.toExternalForm(), > e.getMessage()); > > > > > e.printStackTrace(); > > > > > // Perform any other exception handling that's > > appropriate. > > > > > } finally { > > > > > if (iStream != null) { > > > > > try { > > > > > iStream.close(); > > > > > } catch (IOException e) { > > > > > // TODO Auto-generated catch block > > > > > e.printStackTrace(); > > > > > } > > > > > } > > > > > } > > > > > > > > > > return urlBytes; > > > > > } > > > > > > > > > > > > > > >