2015-06-04 5 views
0

Я делаю одну форму поста с базовой аутентификацией, но всегда код состояния приходит 401.Всегда Код состояние приходит 401

HttpClient httpClient = new DefaultHttpClient(); 
    HttpPost httpPost = new HttpPost(url); 

    MultipartEntityBuilder builder = MultipartEntityBuilder.create();   
    builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); 

    builder.addPart("picture", new FileBody(new File(picture))); 
    builder.addTextBody("firstName", firstname); 
    builder.addTextBody("lastName", lastname); 

    String base64EncodedCredentials = "Basic " +Base64.encodeToString((username+":"+password).getBytes(), Base64.NO_WRAP); 
    Log.d("Authorization", base64EncodedCredentials); 

    httpPost.setHeader("Authorization", base64EncodedCredentials); 
    httpPost.setEntity(builder.build()); 

    HttpResponse httpResponse = httpClient.execute(httpPost); 
    HttpEntity httpEntity = httpResponse.getEntity(); 

Но это прекрасно работает в браузере (Advance клиента остального), пожалуйста, пожалуйста, перейдите через мой код и предложить мне некоторое решение.

+0

Что произойдет, если вы используете свои данные и разместите их на URL-адресе, используя клиент REST, такой как почтальон? – TomRichardson

+0

код статуса наступает 200ok, но из приложения он подходит 401 –

+0

Можете ли вы попробовать с Base64.DEFAULT, когда вы делаете encodeToString? – jagmohan

ответ

0

Сравните запрос HTTP, который вы отправляете с той, что PostMan отправляющего с помощью инструмента Feedler и посмотреть, что вы недостающую

+0

в клиенте отдыха это нормально .... код статуса подходит 200 OK .... –

0

Попробуйте это

String base64EncodedCredentials = "Basic " +Base64.encodeToString((username+":"+password).getBytes("UTF-8"), Base64.DEFAULT); 

вместо

String base64EncodedCredentials = "Basic " +Base64.encodeToString((username+":"+password).getBytes(), Base64.NO_WRAP); 
Смежные вопросы