Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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 来自android应用程序的RESTAPI Web服务调用_Java_Android_Rest_Android Asynctask - Fatal编程技术网

Java 来自android应用程序的RESTAPI Web服务调用

Java 来自android应用程序的RESTAPI Web服务调用,java,android,rest,android-asynctask,Java,Android,Rest,Android Asynctask,我正在尝试从android应用程序调用RESTAPI web服务。 我已经创建了一个扩展AsyncTask的类,用于进行rest调用 下面是代码 package com.example.app; import java.io.IOException; import java.io.UnsupportedEncodingException; import org.apache.http.Header; import org.apache.http.HttpHost; import org.ap

我正在尝试从android应用程序调用RESTAPI web服务。 我已经创建了一个扩展AsyncTask的类,用于进行rest调用 下面是代码

package com.example.app;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.apache.http.Header;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthenticationException;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.StrictMode;

@SuppressLint("NewApi") public class ApiAuthRestGet extends AsyncTask<String
, String,       String> {
static String username = "admin";
static String password = "Admin123";
static String URLBase = "www.openmrs/ws/rest/v1/";
/**
 * HTTP POST
 * @param URLPath
 * @param input
 * @return
 * @throws Exception
 */
//public static Boolean getRequestPost(String URLPath, String input)
  throws   Exception {}
/**
 * HTTP GET
 * @param URLPath
 * @return
 * @throws Exception
 */



public static void setUsername(String username) {
    ApiAuthRestPost.username = username;
}


public static void setPassword(String password) {
    ApiAuthRestPost.password = password;
}


public static void setURLBase(String uRLBase) {
    URLBase = uRLBase;
}
@Override
protected String doInBackground(String... params) {
    HttpHost proxy = new HttpHost("puneproxy.igate.com", 8080);

    String URL = URLBase + params[0];
    String response =  "";
    StrictMode.ThreadPolicy policy = new   StrictMode.ThreadPolicy.Builder()
 .permitAll().build();
    StrictMode.setThreadPolicy(policy);
    DefaultHttpClient httpclient = new DefaultHttpClient();
    httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
    try {
        HttpGet httpGet = new HttpGet(URL);

        UsernamePasswordCredentials credentials =
 new UsernamePasswordCredentials(username, password);
        BasicScheme scheme = new BasicScheme();
        Header authorizationHeader = null;
        try {
            authorizationHeader = 
scheme.authenticate(credentials, httpGet);
        } catch (AuthenticationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
          httpGet.addHeader("Proxy-  Authorization",
authorizationHeader.getValue());
        ResponseHandler<String> responseHandler = new BasicResponseHandler();

       System.out.println("Executing request for get: " + httpGet.getRequestLine());

        try {
            response = httpclient.execute(httpGet,responseHandler);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("response : "+response);

    } finally {
        httpclient.getConnectionManager().shutdown();
    }
    return response;
}

}
我得到以下例外情况

 06-27 07:03:49.030: W/System.err(823): 
    java.util.concurrent.ExecutionException:     java.lang.SecurityException:
     Permission    denied (missing INTERNET permission?)
    06-27 07:03:49.030: W/System.err(823):at java.util.concurrent.FutureTask.report
    (FutureTask.java:93)
    06-27 07:03:49.030: W/System.err(823): at  
    java.util.concurrent.FutureTask.get(FutureTask.java:163)
    06-27 07:03:49.040: W/System.err(823):at android.os.AsyncTask.get(AsyncTask.java:483)
    06-27 07:03:49.040: W/System.err(823):at com.example.app.AddPerson$1.onClick
   (AddPerson.java:56)
    06-27 07:03:49.040: W/System.err(823):
    at android.view.View.performClick(View.java:4438)
    06-27 07:03:49.040:
    W/System.err(823): at   android.view.View$PerformClick.run(View.java:18422)
    06-27 07:03:49.040: W/System.err(823):at   android.os.Handler.handleCallback
    (Handler.java:733)
    06-27 07:03:49.040: W/System.err(823): at   android.os.Handler.dispatchMessage
    (Handler.java:95)
    06-27 07:03:49.040: W/System.err(823): 
    at android.os.Looper.loop(Looper.java:136)
    06-27 07:03:49.040: 
    W/System.err(823):at android.app.ActivityThread.main(ActivityThread.java:5017)
    06-27 07:03:49.040: 
    W/System.err(823):at java.lang.reflect.Method.invokeNative(Native Method)
    06-27 07:03:49.040
    : W/System.err(823):at java.lang.reflect.Method.invoke(Method.java:515)
    06-27 07:03:49.040:
    W/System.err(823): at com.android.internal.os.
    ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    06-27 07:03:49.040: 
    W/System.err(823):                at com.android.internal.os.
    ZygoteInit.main(ZygoteInit.java:595)
    06-27 07:03:49.040: 
    W/System.err(823):                at dalvik.system.NativeStart.main(Native Method)
    06-27 07:03:49.040: W/System.err(823):
    Caused by: java.lang.SecurityException: 
    Permission denied (missing INTERNET permission?)
    06-27 07:03:49.070: W/System.err(823):     
             at java.net.InetAddress.lookupHostByName(InetAddress.java:418)
    06-27 07:03:49.070: W/System.err(823):            
      at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
    06-27 07:03:49.070: W/System.err(823):            
    at java.net.InetAddress.getAllByName(InetAddress.java:214)
    06-27 07:03:49.080: W/System.err(823):             
    at   org.apache.http.impl.conn.
     DefaultClientConnectionOperator.openConnection
    (DefaultClientConnectionOperator.java:137)
    06-27 07:03:49.080: W/System.err(823):at   org.apache.http.impl.conn.
    AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    06-27 07:03:49.080:
    W/System.err(823):at org.apache.http.impl.conn.
    AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    06-27 07:03:49.090: W/System.err(823):         
       at org.apache.http.impl.client.
    DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    06-27 07:03:49.090: W/System.err(823):                
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
    06-27 07:03:49.100: W/System.err(823):                
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:653)
    06-27 07:03:49.100: W/System.err(823):                
     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
    06-27 07:03:49.100: W/System.err(823):                
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
    06-27 07:03:49.110: W/System.err(823):                
     at com.example.app.ApiAuthRestGet.doInBackground(ApiAuthRestGet.java:96)
     06-27 07:03:49.110: W/System.err(823):                
     at com.example.app.ApiAuthRestGet.doInBackground(ApiAuthRestGet.java:1)
    06-27 07:03:49.110: W/System.err(823):                
    at android.os.AsyncTask$2.call(AsyncTask.java:288)
    06-27 07:03:49.120: W/System.err(823):                
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    06-27 07:03:49.120: W/System.err(823):                
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
    06-27 07:03:49.120: W/System.err(823):                
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    06-27 07:03:49.130: W/System.err(823):                
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
     06-27 07:03:49.130: W/System.err(823):               
     at java.lang.Thread.run(Thread.java:841)
    06-27 07:03:49.130: W/System.err(823): 
     Caused by: libcore.io.GaiException: 
     getaddrinfo failed: EAI_NODATA (No address associated with hostname)
    06-27 07:03:49.160: W/System.err(823):                
    at libcore.io.Posix.getaddrinfo(Native Method)
    06-27 07:03:49.160: W/System.err(823):                
    at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:61)
    06-27 07:03:49.160: W/System.err(823):                
    at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
     06-27 07:03:49.170: W/System.err(823):                ... 18 more
     06-27 07:03:49.180: W/System.err(823): 
     Caused by: libcore.io.ErrnoException:      
     getaddrinfo failed: EACCES (Permission denied)
我还没有自己设计web服务。 但我使用的是在线RESTAPI的web服务。 我不能使用改型来重新设计web服务。
请帮助我解决这个问题

Simple,use.@Emmanuel不仅不需要这个库,它也没有帮助-这是一个权限问题。我只是推荐一个比使用定制的
AsyncTask
生成REST调用更好的解决方案。还有,你不觉得我现在知道怎么读stacktrace了吗?他说他在舱单上添加了许可。
manifestmerger.enabled=true 
 06-27 07:03:49.030: W/System.err(823): 
    java.util.concurrent.ExecutionException:     java.lang.SecurityException:
     Permission    denied (missing INTERNET permission?)
    06-27 07:03:49.030: W/System.err(823):at java.util.concurrent.FutureTask.report
    (FutureTask.java:93)
    06-27 07:03:49.030: W/System.err(823): at  
    java.util.concurrent.FutureTask.get(FutureTask.java:163)
    06-27 07:03:49.040: W/System.err(823):at android.os.AsyncTask.get(AsyncTask.java:483)
    06-27 07:03:49.040: W/System.err(823):at com.example.app.AddPerson$1.onClick
   (AddPerson.java:56)
    06-27 07:03:49.040: W/System.err(823):
    at android.view.View.performClick(View.java:4438)
    06-27 07:03:49.040:
    W/System.err(823): at   android.view.View$PerformClick.run(View.java:18422)
    06-27 07:03:49.040: W/System.err(823):at   android.os.Handler.handleCallback
    (Handler.java:733)
    06-27 07:03:49.040: W/System.err(823): at   android.os.Handler.dispatchMessage
    (Handler.java:95)
    06-27 07:03:49.040: W/System.err(823): 
    at android.os.Looper.loop(Looper.java:136)
    06-27 07:03:49.040: 
    W/System.err(823):at android.app.ActivityThread.main(ActivityThread.java:5017)
    06-27 07:03:49.040: 
    W/System.err(823):at java.lang.reflect.Method.invokeNative(Native Method)
    06-27 07:03:49.040
    : W/System.err(823):at java.lang.reflect.Method.invoke(Method.java:515)
    06-27 07:03:49.040:
    W/System.err(823): at com.android.internal.os.
    ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    06-27 07:03:49.040: 
    W/System.err(823):                at com.android.internal.os.
    ZygoteInit.main(ZygoteInit.java:595)
    06-27 07:03:49.040: 
    W/System.err(823):                at dalvik.system.NativeStart.main(Native Method)
    06-27 07:03:49.040: W/System.err(823):
    Caused by: java.lang.SecurityException: 
    Permission denied (missing INTERNET permission?)
    06-27 07:03:49.070: W/System.err(823):     
             at java.net.InetAddress.lookupHostByName(InetAddress.java:418)
    06-27 07:03:49.070: W/System.err(823):            
      at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
    06-27 07:03:49.070: W/System.err(823):            
    at java.net.InetAddress.getAllByName(InetAddress.java:214)
    06-27 07:03:49.080: W/System.err(823):             
    at   org.apache.http.impl.conn.
     DefaultClientConnectionOperator.openConnection
    (DefaultClientConnectionOperator.java:137)
    06-27 07:03:49.080: W/System.err(823):at   org.apache.http.impl.conn.
    AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    06-27 07:03:49.080:
    W/System.err(823):at org.apache.http.impl.conn.
    AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    06-27 07:03:49.090: W/System.err(823):         
       at org.apache.http.impl.client.
    DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    06-27 07:03:49.090: W/System.err(823):                
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
    06-27 07:03:49.100: W/System.err(823):                
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:653)
    06-27 07:03:49.100: W/System.err(823):                
     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
    06-27 07:03:49.100: W/System.err(823):                
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
    06-27 07:03:49.110: W/System.err(823):                
     at com.example.app.ApiAuthRestGet.doInBackground(ApiAuthRestGet.java:96)
     06-27 07:03:49.110: W/System.err(823):                
     at com.example.app.ApiAuthRestGet.doInBackground(ApiAuthRestGet.java:1)
    06-27 07:03:49.110: W/System.err(823):                
    at android.os.AsyncTask$2.call(AsyncTask.java:288)
    06-27 07:03:49.120: W/System.err(823):                
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    06-27 07:03:49.120: W/System.err(823):                
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
    06-27 07:03:49.120: W/System.err(823):                
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    06-27 07:03:49.130: W/System.err(823):                
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
     06-27 07:03:49.130: W/System.err(823):               
     at java.lang.Thread.run(Thread.java:841)
    06-27 07:03:49.130: W/System.err(823): 
     Caused by: libcore.io.GaiException: 
     getaddrinfo failed: EAI_NODATA (No address associated with hostname)
    06-27 07:03:49.160: W/System.err(823):                
    at libcore.io.Posix.getaddrinfo(Native Method)
    06-27 07:03:49.160: W/System.err(823):                
    at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:61)
    06-27 07:03:49.160: W/System.err(823):                
    at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
     06-27 07:03:49.170: W/System.err(823):                ... 18 more
     06-27 07:03:49.180: W/System.err(823): 
     Caused by: libcore.io.ErrnoException:      
     getaddrinfo failed: EACCES (Permission denied)