android - Specifying a Single Request To Use Credentials with HttpClient -


i using oauth2 on android project. idea use singleton httpclient used threadsafeclientconnmanager.

for normal request server construct authorization header , send that. header constructed values received server. works fine. every 15 minutes must new values server construct header. received these values must set credentials so.

client.getcredentialsprovider().setcredentials(         new authscope(authscope.any_host, authscope.any_port),         new usernamepasswordcredentials(creds.clientid, creds.clientsecret)); 

in order work must set , new defaulthttpclient. if use original singleton httpclient receive errors. question is.. possible set credentials used on 1 request?

i noticed there authscope. host , port not suitable maybe realm would? can't find tells me realm or how use it.

06-05 10:12:55.969: w/system.err(23843): org.apache.http.nohttpresponseexception: target server failed respond 06-05 10:12:55.969: w/system.err(23843): @ org.apache.http.impl.conn.defaultresponseparser.parsehead(defaultresponseparser.java:85) 06-05 10:12:55.969: w/system.err(23843): @ org.apache.http.impl.io.abstractmessageparser.parse(abstractmessageparser.java:174) 06-05 10:12:55.969: w/system.err(23843): @ org.apache.http.impl.abstracthttpclientconnection.receiveresponseheader(abstracthttpclientconnection.java:179) 06-05 10:12:55.969: w/system.err(23843): @ org.apache.http.impl.conn.defaultclientconnection.receiveresponseheader(defaultclientconnection.java:235) 06-05 10:12:55.969: w/system.err(23843): @ org.apache.http.impl.conn.abstractclientconnadapter.receiveresponseheader(abstractclientconnadapter.java:259) 06-05 10:12:55.975: w/system.err(23843): @ org.apache.http.protocol.httprequestexecutor.doreceiveresponse(httprequestexecutor.java:279) 06-05 10:12:55.975: w/system.err(23843): @ org.apache.http.protocol.httprequestexecutor.execute(httprequestexecutor.java:121) 06-05 10:12:55.975: w/system.err(23843): @ org.apache.http.impl.client.defaultrequestdirector.execute(defaultrequestdirector.java:504) 06-05 10:12:55.975: w/system.err(23843): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:555) 06-05 10:12:55.975: w/system.err(23843): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:487) 06-05 10:12:55.975: w/system.err(23843): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:465)

so after more testing have found problem lies.

i want configure pooled connection manager so

schemeregistry schemeregistry = new schemeregistry(); schemeregistry.register(         new scheme("http", plainsocketfactory.getsocketfactory(), 80)); schemeregistry.register(         new scheme("https", plainsocketfactory.getsocketfactory(), 443));   clientconnectionmanager conmanager = new threadsafeclientconnmanager(new basichttpparams(), schemeregistry);     defaulthttpclient httpclient = new defaulthttpclient(conmanager, new basichttpparams()); 

but when configure this, error above. if use normal default httpclient so

 defaulthttpclient httpclient = new defaulthttpclient(); 

then works fine. ideas?

as 1 requests needs basic auth credentials, , apparently calling setcredentials() causes error, best might not use credentials provider @ , set basic auth header manually (using setheader() on request) when need it.

edit: here's how should create threadsafe shared httpclient instance:

 defaulthttpclient createhttpclient(int timeout) {         httpparams params = new basichttpparams();         httpprotocolparams.setcontentcharset(params,                 http.default_content_charset);         httpconnectionparams.setconnectiontimeout(params, timeout);         httpprotocolparams.setuseragent(params, "myapp/1.0");         connperroute connperroute = new connperroutebean(10);         connmanagerparams.setmaxconnectionsperroute(params, connperroute);         connmanagerparams.setmaxtotalconnections(params, 20);          schemeregistry schemeregistry = new schemeregistry();         schemeregistry.register(new scheme("http", plainsocketfactory                 .getsocketfactory(), 80));         final sslsocketfactory sslsocketfactory = sslsocketfactory                 .getsocketfactory();         schemeregistry.register(new scheme("https", sslsocketfactory, 443));         clientconnectionmanager cm = new threadsafeclientconnmanager(params,                 schemeregistry);          return new defaulthttpclient(cm, params);     } 

Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -