물고물고기
20
2018-12-07 02:05:24 작성 2018-12-07 02:09:44 수정됨
2
131

안드로이드- php 연결문제..


안드로이드로 로그인,회원가입 을 만들었는데 로그인은 잘되는데 회원가입에서

첨부 이미지

첨부 이미지
커넥션에 값이제대로 전달됐지만 UnkonwnHostException에 걸립니다.

1pc= iis,php,mysql 구성 노트북
2pc= 1pc개발자의 다른 노트북
3pc= 제 노트북 입니다

그래서 지금 테스트를 해본것은
1.서버개발한사람은 잘되는지 확인 해본결과 다른 pc에서 저와동일히 외부접속을했는데 로그인,회원가입 둘다 잘 됩니다
2.그래서 현재 개발자의 안드로이드 프로젝트를 통째로 받아 제 pc에서 실행했더니 역시 같은현상입니다.( api버전 동일합니다 api28) 
3.=?? 어떻게 그럴수있냐 생각이들어서,
서버개발 pc1말고 pc2로 외부접속을 다시하고 되면 그걸또 다시 나한테 통째로 보내봐라했는데
또 안됩니다. 완벽히 똑같은 소스내용과 api 동일 프로젝트인데 왜 안되는지 당최모르겠습니다
apk를 휴대폰에인스톨하고 LTE환경에서 테스트했는데 되구요

동일 프로젝트를 가져왔는데 로그인은 되고 회원가입은 안된다.. 
당연히 소스문제x, 퍼미션문제x, 로그인은 되니까 연결문제x, 입력값 규정안에서 수십번테스트,
동일프로젝트가 아예 네트워크 문제로 먹통이면 고민도 안하는데..

insert하는 소스에서 문제가있으니까 이부분이 특정되서 잘못했다? 생각하기엔 외부 접속을해도 1pc에서 인스톨된건 잘되고.. 

- 회원가입 소스 입니다

package com.example.administrator.winserver;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.EditText;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {
final Context context = this;
EditText et_id, et_pw, et_pw_chk;
String sId, sPw, sPw_chk;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

et_id = (EditText) findViewById(R.id.Id);
et_pw = (EditText) findViewById(R.id.Pw);
et_pw_chk = (EditText) findViewById(R.id.Pwck);
}

public void bt_Join(View view)
{
sId = et_id.getText().toString();
sPw = et_pw.getText().toString();
sPw_chk = et_pw_chk.getText().toString();

if (sPw.equals(sPw_chk))
{
registDB rdb = new registDB();
rdb.execute();
}
else
{

}
}
public class registDB extends AsyncTask<Void,Integer,Void> {
String data = "";
@Override
protected Void doInBackground(Void... unused) {

/* 인풋 파라메터값 생성 */
String param = "u_id=" + sId + "&u_pw=" + sPw + "";
try {
/* 서버연결 */
URL url = new URL(
"http:/14.46.148.166:8080/win/snclib_join.php");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.connect();

/* 안드로이드 -> 서버 파라메터값 전달 */
OutputStream outs = conn.getOutputStream();
outs.write(param.getBytes("UTF-8"));
outs.flush();
outs.close();

/* 서버 -> 안드로이드 파라메터값 전달 */
InputStream is = null;
BufferedReader in = null;


is = conn.getInputStream();
in = new BufferedReader(new InputStreamReader(is), 8 * 1024);
String line = null;
StringBuffer buff = new StringBuffer();
while ( ( line = in.readLine() ) != null )
{
buff.append(line + "\n");
}
data = buff.toString().trim();
Log.e("RECV DATA",data);

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}



return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);

/* 서버에서 응답 */
Log.e("RECV DATA",data);

AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);


if(data.equals("0"))
{
Log.e("RESULT","성공적으로 처리되었습니다!");
alertBuilder
.setTitle("알림")
.setMessage("성공적으로 등록되었습니다!")
.setCancelable(true)
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
AlertDialog dialog = alertBuilder.create();
dialog.show();
}
else
{
Log.e("RESULT","에러 발생! ERRCODE = " + data);
alertBuilder
.setTitle("알림")
.setMessage("등록중 에러가 발생했습니다! errcode : "+ data)
.setCancelable(true)
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
AlertDialog dialog = alertBuilder.create();
dialog.show();
}
}

}

public void bt_back(View view){//회원가입으로 넘어감
Intent intent = new Intent(this, Main2Activity.class);//레지스터액티비티로 넘어갈 수 있도록
startActivity(intent);
}

}


-로그인 소스입니다.
package com.example.administrator.winserver;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.EditText;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class Main2Activity extends AppCompatActivity {

EditText et_id, et_pw;
String sId, sPw;

final Context context = this;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main2);

et_id = (EditText) findViewById(R.id.Id);
et_pw = (EditText) findViewById(R.id.Pw);

}

public void bt_Login(View v)
{
try{
sId = et_id.getText().toString();
sPw = et_pw.getText().toString();
}catch (NullPointerException e)
{
Log.e("err",e.getMessage());
}

loginDB lDB = new loginDB();
lDB.execute();

}
public class loginDB extends AsyncTask<Void, Integer, Void> {
String data = "";
@Override
protected Void doInBackground(Void... unused) {

/* 인풋 파라메터값 생성 */
String param = "u_id=" + sId + "&u_pw=" + sPw + "";
Log.e("POST",param);
try {
/* 서버연결 */
URL url = new URL(
"http://14.46.148.166:8080/win/login.php");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.connect();

/* 안드로이드 -> 서버 파라메터값 전달 */
OutputStream outs = conn.getOutputStream();
outs.write(param.getBytes("UTF-8"));
outs.flush();
outs.close();

/* 서버 -> 안드로이드 파라메터값 전달 */
InputStream is = null;
BufferedReader in = null;


is = conn.getInputStream();
in = new BufferedReader(new InputStreamReader(is), 8 * 1024);
String line = null;
StringBuffer buff = new StringBuffer();
while ( ( line = in.readLine() ) != null )
{
buff.append(line + "\n");
}
data = buff.toString().trim();

/* 서버에서 응답 */
Log.e("RECV DATA",data);

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return null;
}

@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);

AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
if(data.equals("1"))
{
Log.e("RESULT","성공적으로 처리되었습니다!");
alertBuilder
.setTitle("알림")
.setMessage("성공적으로 등록되었습니다!")
.setCancelable(true)
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Main2Activity.this, Main2Activity.class);
startActivity(intent);
finish();
}
});
AlertDialog dialog = alertBuilder.create();
dialog.show();
}
else if(data.equals("0"))
{
Log.e("RESULT","비밀번호가 일치하지 않습니다.");
alertBuilder
.setTitle("알림")
.setMessage("비밀번호가 일치하지 않습니다.")
.setCancelable(true)
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//finish();
}
});
AlertDialog dialog = alertBuilder.create();
dialog.show();
}
else
{
Log.e("RESULT","에러 발생! ERRCODE = " + data);
alertBuilder
.setTitle("알림")
.setMessage("등록중 에러가 발생했습니다! errcode : "+ data)
.setCancelable(true)
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//finish();
}
});
AlertDialog dialog = alertBuilder.create();
dialog.show();
}
}
}
public void mOnClick(View view){//회원가입으로 넘어감
Intent intent = new Intent(this, MainActivity.class);//레지스터액티비티로 넘어갈 수 있도록
startActivity(intent);
}

}

-php 회원가입 소스입니다

<?php
  header('content-type: text/html; charset=utf-8');

  $connect=mysql_connect("localhost", "root", "autoset") or
        die( "SQL server에 연결할 수 없습니다.");

  mysql_query("SET NAMES UTF8");
  mysql_select_db("kdhong_db",$connect);

  session_start();

   $id = $_POST['u_id'];
   $pw = $_POST['u_pw'];
   $sql = "INSERT INTO user(id, pw) VALUES('$id', '$pw')";

   $result = mysql_query($sql);

   echo mysql_errno($connect);

   // if(!$result)
   // {
   //          die("mysql query error");
   //  }
   //  else
   //  {
   //    echo "0000";
   //  }

?>

0
0
  • 답변 2

  • Deer Hunter
    115
    2018-12-07 09:14:08

    회원가입 url에 '/' 하나가 빠진 것 같습니다.

    0
  • 최자바
    754
    2018-12-07 09:29:20

    일단 먼저 저 주소를 Url 창에다가 쳐서 에러 메시지 확인해보세요

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.