éçºã§äžã€éåžžã«åŒã£ããã£ãŠããéšåããããäœãæèŠãããã ãããããã®ã§ããã»ã»ã»
Androidã§ã®Apacheã®HttpClientã¯ã©ã¹ã«é¢ããŠäœã䜿ãã«ããã£ãŠæ³šæç¹ã¿ãããªãã®ã¯ããã§ããããïŒ
ããããæšªçããŠãŸããŠHttpClient4.0ã®ã»ãã䜿ã£ãŠããã®ã§ãã
æ¥ç¶ãå®å®ãããããªãã®ç¢ºçã§
ãSocket is not connected
ãšãããšã©ãŒãåããŠããŸã£ãŠããŸããã»ã»ã»ãããæ¯åºŠãªãããããã§ãããåºããã§ãªãã£ããããã®ãåé¡ã§ãããŸããŠã
åææ¥ç¶åŠçããããããªãåå ãšçšãã§ã
Clientã®ã€ã³ã¹ã¿ã³ã¹ã®ç®¡çãsingletonã«ããŸããŠã䜿çšããã¡ãœããããã¹ãŠsynchronizedã§äžæ¬åããã®ã§ãã
ãã£ã±ãçºçããŠããŸãã®ã§ã
UIã®ã¡ã€ã³ã¹ã¬ããããã®åå²ã¯AsyncTackã¯ã©ã¹ã䜿ã£ãŠãããšã¯æ®éã«åæçã«éä¿¡ããããã«èšèšããŠããŸãã
åæ§ã®åé¡ãæ±ããŠããæ¹ãšãã解決æ³ãç¥ã£ãŠãããšããæ¹ã¯ããŸããã§ããããïŒ
äœã糞å£ã ãã§ãæããŠããã ãããã§ã
Javaã®ããã°ã©ãã³ã°æµåã«äžæ
£ãã§ããããŒã¯ãŒã¯ç³»ã®æ
£äŸçãªå®è£
ããããããããããã«åèæžã®èšè¿°ãããããã§æ··ä¹±æ°å³ã§ãïœ
runtimeerrorãšãã§ã·ã¹ãã åŽãŸã§ãšã©ãŒãç»ããã£ãå Žå
以åŸSocket is not connected ãé »çºãã
ã¢ããªã®ã¿ã¹ã¯ãå®å
šã«æ®ºããŠãããšã©ãŒãé »çºããã
æåãšããŠã¯ãšã©ãŒããšã©ãŒãå©é·ãããé°å²æ°
ãšã©ãŒã¯éçºäžã®ã¢ããªã®ã¿ã§çºçããã
ä»ã®ã¢ããªã«ã¯åœ±é¿ãç¡ãã
æ¬äœã®é»æºãå
¥ãçŽããšå埩ãã
çŸåšã¯ç«ã¡äžãã®éã«ãšã©ãŒãåºããäžæŠæ¥ç¶ãè§£é€ããŠããŸãæ¥ç¶ãããšããããšã§ãªãã ããšã©ãŒãåãŸã£ãŠããã®ã§ãªããšãã§ããŠããã¿ããã§ãã
ãã¯ãããŸã«ãã®ç¶æ³ã«ãªããŸããã
äžå¿åèãŸã§ã«ã³ãŒãæããŠãããŸã
public enum Connection{
INSTANCE;
private HttpClient client = null;
private HttpClient getClient(){
if(client == null){
client = new DefaultHttpClient();
client.getParams().setIntParameter("http.connection.timeout", 5000);
client.getParams().setIntParameter("http.socket.timeout",
5000);
client.getParams().setParameter(ClientPNames.COOKIE_POLICY,
CookiePolicy.BROWSER_COMPATIBILITY);
}
return client;
}
synchronized public byte[] get(String url, List<SendParam>
sendParams) throws Exception{
List<String> paramString = new ArrayList<String>();
for(SendParam param : sendParams){
switch(param.getPartType()){
case FILE:
break;
case STRING:
paramString.add(param.getName() + "=" +
param.getBody());
break;
}
}
if(!paramString.isEmpty()){
url = url + "?" + StringUtils.join(paramString, "&");
}
HttpGet get = new HttpGet(url);
byte[] result = new byte[0];
try{
HttpEntity he = doRequest(get);
result = EntityUtils.toByteArray(he);
}
catch(Exception e){
Log.e("Connection.get", e.getMessage());
}
finally{
if(get != null && !get.isAborted()){
get.abort();
}
}
return result;
}
synchronized private HttpEntity doRequest(HttpUriRequest method)
throws Exception{
HttpResponse response = null;
try{
response = getClient().execute(method);
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() != HttpURLConnection.HTTP_OK)
{
throw new Exception("error");
}
}
catch(Exception e){
throw e;
}
HttpEntity he = response.getEntity();
return he;
}
}
ãã®getã¡ãœããã
Activityå
ã®ã€ã³ããŒã¯ã©ã¹ãšããŠäœæããAsyncTaskã®doInBackgroundã¡ãœããå
ã§äœ¿ã£ãŠããŸãã
Javaã®ã³ãŒãã¯ããŸãåŸæã§ã¯ãªãã®ã§ãå€ãªã³ãŒããããããªãã§ããã©ããããªæãã§ããSendParamã¯åãªãå
¥ãç©çã¯ã©ã¹ã§ãã