2017-08-11 1 views
1

Je reçois le message Accès refusé 401 lors de l'appel du service de publication HTTP. Dans Postman obtenant le résultat, mais lors de l'appel via le service, il affiche le message Accès refusé. S'il vous plaît, n'importe qui, aidez-moi à résoudre mon problème.Obtention du message Accès refusé lors de l'appel du service de publication http

Voici mon code.

try { 
    HttpClient httpClient = new DefaultHttpClient(); 
    HttpPost request = new HttpPost("https://site:[email protected]/devkoopicafenetecco-2/_search"); 
    request.setHeader("Content-type", "application/json"); 
    JSONObject myjson = new JSONObject(); 

    myjson.put("from", 0); 
    myjson.put("size", 10); 

    StringEntity entity = new StringEntity(myjson.toString()); 

    entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, 
        "application/json; charset=utf-8")); 

    request.setEntity(entity); 

    final HttpParams httpParams = new BasicHttpParams(); 
    HttpConnectionParams.setConnectionTimeout(httpParams, 30000); 

    HttpResponse response = httpClient.execute(request); 
    InputStream instream = response.getEntity().getContent(); 
    String tempresult = convertStreamToString(instream); 
    instream.close(); 
    result = tempresult.toString(); 

} catch (Exception ex) { 
    Log.e("exception","ex"+ex); 
    ex.printStackTrace(); 
} 
+1

Est-ce que votre URL nécessite des cookies? Comme Postman pourrait avoir ajouté, mais dans votre demande http vous devez. – Anurag

+0

Lorsque l'authentification d'accès anonyme est désactivée pour l'application de service Web, toutes les applications appelantes doivent fournir les informations d'identification avant toute demande. Par défaut, le proxy client du service Web n'hérite pas des informations d'identification du contexte de sécurité dans lequel l'application cliente du service Web est en cours d'exécution. https://community.nintex.com/community/build-your-own/nintex-for-office-365/blog/2015/05/14/o365-call-http-web-service-failed-unauthorized-access- refusé –

+0

dans ios également afficher la réponse – Lassie

Répondre

0

Vous pouvez vérifier et ajouter 'User-Agent' lorsque vous envoyez votre request.Like ceci:

url = new URL(urlStr); 
     HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
      urlConnection.setRequestProperty("Content-Type", "application/json"); 
      urlConnection.setRequestProperty("User-Agent","Pk"); 
      urlConnection.setRequestProperty("Accept", "application/json"); 
      urlConnection.setRequestMethod("GET"); 

ou

request.setheader("User-Agent","PK"); 
0

essayez ce code:

try { 
      String url = "https://site:[email protected]/devkoopicafenetecco-2/_search"; 
      SSLContext sslContext = SSLContexts.createSystemDefault(); 
      SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
        sslContext, 
        SSLConnectionSocketFactory.STRICT_HOSTNAME_VERIFIER); 
      CloseableHttpClient client= HttpClientBuilder.create() 
        .setSSLSocketFactory(sslsf) 
        .build(); 
      HttpPost request = new HttpPost(url); 

      request.addHeader("Accept", " */*"); 
      request.addHeader("User-Agent", "runscope/0.1"); 
      request.addHeader("Accept-Encoding", "gzip, deflate"); 
      request.addHeader("Authorization", "Basic c2l0ZTphYjRhY2E2NTIyODRkN2RjODdjYTFmMzQ3ZjJhYzQzMg=="); 

      HttpResponse response = client.execute(request); 

      System.out.println("Response Code : " + response.getStatusLine().getStatusCode()); 

      BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

      StringBuffer result = new StringBuffer(); 
      String line = ""; 
      while ((line = rd.readLine()) != null) { 
       result.append(line); 
      } 

      System.out.println(result.toString()); 

     } catch (Exception ex) { 
      Log.e("exception","ex"+ex); 
      ex.printStackTrace(); 
     }