마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안녕하세요 php와 안드로이드 연동 질문드립니다. ㅠㅠ

0 추천
package com.example.iamapainter;

import java.io.InputStream;
import java.net.URL;
import java.net.URLEncoder;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class joinActivity extends Activity {
 Button joinOk;
 EditText edtname, edtid, edtpass;
 private static final String SERVER_ADDRESS ="http://아이피:8080";
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.join);
  
  StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
  StrictMode.setThreadPolicy(policy);
  
  joinOk = (Button) findViewById(R.id.joinOk);
  
  edtname = (EditText) findViewById(R.id.edtname);
  edtid = (EditText) findViewById(R.id.edtid);
  edtpass = (EditText) findViewById(R.id.edtpass);
  
  joinOk.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v){
    if(edtname.getText().toString().equals("") || edtid.getText().toString().equals("") || edtpass.getText().toString().equals("")) {
     Toast.makeText(joinActivity.this, "입력오류입니다", Toast.LENGTH_SHORT).show();
     return;
    }
    runOnUiThread(new Runnable() {
     public void run() {
      
      String name = edtname.getText().toString();
      String id = edtid.getText().toString();
      String password = edtpass.getText().toString();
      
      try{
       URL url = new URL(SERVER_ADDRESS + "/sos.php?"+"name=" + URLEncoder.encode(name, "UTF-8") 
         + "&id=" + URLEncoder.encode(id, "UTF-8")
         + "&password=" + URLEncoder.encode(password, "UTF-8"));
        
         url.openStream();
         
         String result = getXmlData("insertresult.xml", "result");
         
         if(result.equals("1")){
          Toast.makeText(joinActivity.this, "가입완료! 로그인하세요", Toast.LENGTH_SHORT).show();
          
          edtname.setText("");
          edtid.setText("");
          edtpass.setText("");
          
          startActivity(new Intent(joinActivity.this, loginActivity.class));
          finish();
         }
         else
          Toast.makeText(joinActivity.this, "회권 가입 실패(ID 중복일 수 있습니다.)",Toast.LENGTH_SHORT).show();
         
      }
      catch(Exception e){
       Log.e("Error", e.getMessage());
      }
     }
    });
   }
  });

 }
 
 private String getXmlData(String filename, String str) {
  String rss = SERVER_ADDRESS +"/";
  String ret = "";
  
   try{
    XmlPullParserFactory factory  = XmlPullParserFactory.newInstance();
    factory.setNamespaceAware(true);
    XmlPullParser xpp = factory.newPullParser();
    URL server = new URL(rss+filename);
    InputStream is = server.openStream();
    xpp.setInput(is,"UTF-8");
    
    int eventType = xpp.getEventType();
    
    while(eventType != XmlPullParser.END_DOCUMENT) {
     if(eventType == XmlPullParser.START_TAG) {
      if(xpp.getName().equals(str)) {
       ret = xpp.nextText();
      }
     }
     eventType = xpp.next();
    }
   } catch(Exception e) {
    Log.e("Error", e.getMessage());
   }
   return ret;
 }

}

실행을하면 failed to connect가 뜹니다 좀 도와주세요 ㅠㅠ

maedduk (180 포인트) 님이 2015년 7월 15일 질문

2개의 답변

0 추천

설마 아래의 내용(소스에서 발췌)을 그대로 사용하신건가요? 그렇다면 커넥션 실패가 날 수 밖에요. 서버 주소로 바꿔주세요

private static final String SERVER_ADDRESS ="http://아이피:8080";

cc1232 (35,280 포인트) 님이 2015년 7월 15일 답변
안녕하세요 cc1232님 서버주소로 바꿔주라는게 무슨말인가요??
제아이피를 써서 했는데 어디가 잘못된건지 ㅠㅠ
DNS 서버 주소말씀하시는건가요??  DNS서버주소로바꿔도 안되던데;;
안녕하세요? 혹시나 문자열의 내용이 그냥 '아이피'라는 단어가 들어간 채로 실행했나 싶어서 여쭤봤던 겁니다.
제대로 주소를 입력했다면, 소스 확인보다 단말에서 서버ip로 접속이 되는지를 먼저 확인해야 할 것 같습니다.
같은 게이트웨이(공유기)를 써도 ip를 못 찾는 경우가 꽤 있더라구요.
DNS서버 주소로 바꿔도 안된다면 다른 문제일 가능성이 커 보입니다.
단말의 웹브라우저에서 저 명령을 입력하면 서버에 명령이 도달하나요? 그것부터 보시죠(http://아이피:8080/sos.php블라블라~~~)
0 추천
cc1232님의 답변은 단순히 "아이피"라고 작성하신 것에 대한 물음인것 같습니다.

저도 아직 초보여서 정확한 답변을 드리지 못해 죄송하지만

혹시 네트워크가 같은 네트워크에서 사용하시는 건가요?

다른 네트워크에서 사용하면 연결이 안되는 경우가 많은 것 같습니다.
Constant_ (840 포인트) 님이 2015년 7월 15일 답변
...