2016-05-24 2 views
0

Я пытаюсь использовать класс HttpUrlConnection в Async Task внутри doInBackground.Как использовать метод POST внутри HttpUrlConnection

@Override 
    protected String doInBackground(String... params) { 
     String strUrl=String.format("%s",SERVER_URL); 
     try { 

      URL url =new URL(strUrl); 
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
      urlConnection.setRequestMethod("POST"); 
      urlConnection.setDoOutput(true); 
      urlConnection.setDoInput(true); 
      urlConnection.setChunkedStreamingMode(0); 
      urlConnection.setRequestProperty("Content-Type","application/json"); 

      String str="{\"userid\":\"1\"}"; 
      byte[] outputInBytes = str.getBytes("UTF-8"); 
      OutputStream os = urlConnection.getOutputStream(); 
      os.write(outputInBytes); 
os.close(); 


      InputStream stream1=urlConnection.getInputStream(); 
InputStreamReader reader = new InputStreamReader(stream1); 
     StringBuilder builder = new StringBuilder(); 
     int chr; 
     while((chr=reader.read())!=-1) 
     { 
      builder.append((char)chr); 
     } 
     String result=builder.toString(); 

return result; 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
return null; 
    } 

Но я получаю нуль вместо результата, в чем проблема.

+0

Отладить свой код и проверить, как только ваш поток кода –

+0

вы можете использовать это для получения и публикации http://stackoverflow.com/questions/37289109/calling-a-async-task-and-waiting-for-answer? noredirect = 1 # comment62106624_37289109 –

+0

Вы получаете нуль на код сервера или результат ?, значение результата будет на что-либо, что отвечает сервер. –

ответ

0

Наконец мой код работает хорошо, он нуждается в некоторых изменениях, такие как: -

По этому методу нашего URL получить фрагментированный в определенные пакеты.

urlConnection.setChunkedStreamingMode(0);//No use in my code 

Как я использую трудно закодированный строку JSON, которая рассматривается как простой String.So вместо «приложения/JSON», я имею использовать «применение/х-WWW-форм-urlencoded» как указано ниже.

urlConnection.setRequestProperty("Content-Type","application/json");//incorrect 
urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");//when we need to pass string inside POST body. 

Он предназначен для подключения к URL-адресу метода POST.

urlConnection.connect(); 

Если у меня возникла неправильная концепция, сообщите мне об этом.

Смежные вопросы