2011-02-16 5 views
1

누구나 인증 된 세부 정보를 편안한 웹 서비스에 게시하고 이에 대한 응답을받는 방법을 알려줍니다. Username, IsAuthenticated (예 : true 또는 false), Password.Also도 URL 인코딩 방법을 설명해야합니다. 아래 코드를 보았습니다. 나는 안드로이드에서 초보자입니다.안드로이드에서 안정적인 웹 서비스를 호출하는 방법

public class LoginActivity extends Activity 
{ 
    String Username; 
    String Password; 
    String IsAuthenticated; 
    String answer; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      try { 
       POST(Username,Password,IsAuthenticated); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 


    public String POST(String Username, String IsAuthenticated, String Password) { 
     String Returned = null; 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://......./Authenticate"); 

      try { 
      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
      // Your DATA 
      nameValuePairs.add(new BasicNameValuePair("UserName", "Username")); 
      nameValuePairs.add(new BasicNameValuePair("IsAuthenticated", "false")); 
      nameValuePairs.add(new BasicNameValuePair("Password", "Password")); 

      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity resEntity = response.getEntity(); 
      Returned = EntityUtils.toString(resEntity); 

      System.out.println(Returned); 
      Toast.makeText(this, Returned, Toast.LENGTH_LONG).show(); 
      } catch (ClientProtocolException e) { 
      Toast.makeText(this, "There was an issue Try again later", Toast.LENGTH_LONG).show(); 
      } catch (IOException e) { 
      Toast.makeText(this, "There was an IO issue Try again later", Toast.LENGTH_LONG).show(); 
      e.printStackTrace(); 
      } 

      return Returned; 
     } 
} 
+0

POST 방법이 정상적으로 보입니다. 오류가 있습니까? 그러나 별도의 스레드에서 네트워크 작업을 수행해야합니다. [Painless Threading] (http://developer.android.com/resources/articles/painless-threading.html) 및 [AsyncTask] (http://developer.android.com/reference/android/os/AsyncTask.html)를 참조하십시오.). – basilisk

+0

안녕하세요 basilisk, URL에 내 로그인 매개 변수를 인코딩하는 데 문제가 있습니다. 내가 tat을 극복하면 출력을 얻을 것입니다. 어떤 제안 ??? – Dray

+0

나는 인코딩을 지정하지 않고'httppost.setEntity (new UrlEncodedFormEntity (nameValuePairs))'를 사용했고, 모든 것이 잘 작동하는 것처럼 보였다. 인코딩하지 않으셨습니까? – basilisk

답변

4

그리고 나는 마침내 대답을 얻었고 나를 위해 잘 작동합니다. 아래 작업 코드를 게시했습니다.

public class LoginActivity extends Activity 
{ 
    String Returned; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      try { 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost post = new HttpPost("http://Your url here/"); 
       StringEntity str = new StringEntity("Your xml code"); 
       str.setContentType("application/xml; charset=utf-8"); 
       str.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/xml; charset=utf-8")); 
       post.setEntity(str); 
       HttpResponse response = httpclient.execute(post); 
       HttpEntity entity = response.getEntity(); 
       Returned = EntityUtils.toString(entity); 
       Toast.makeText(this, Returned, Toast.LENGTH_LONG).show(); 
      } catch (IOException ioe) { 
      ioe.printStackTrace(); 
      } 
      } 
} 

답장을 보내 주셔서 감사합니다.

+0

AsyncTask를 사용해보십시오 –

관련 문제