jsp와 오라클을 이용한 어플 회원가입 및 로그인 화면 예제를 공부하던 중 질문이 생겨 질문글 남깁니다!
서버와 연결해서 앱의 입력값을 넣는 액티비티
- RegisterActivity.java
package com.example.loginexample;
import android.os.AsyncTask;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class RegisterActivity extends AsyncTask<String, Void, String>
{
String sendMsg, receiveMsg;
@Override
protected String doInBackground(String... strings)
{
try
{
String str;
// 접속할 서버 주소(이클립스에서 android.jsp 실행시 웹프라우저 주소)
URL url = new URL("http://아이피주소/Test/WebContent/Android/androidDB.jsp");
/* http://ip주소:포트번호/이클립스프로젝트명/WebContent아래폴더/androidDB.jsp */
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestMethod("POST");
OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream(),"UTF-8");
// 전송할 데이터.GET 방식으로 작성
sendMsg="id="+strings[0]+"&pw="+strings[1];
osw.write(sendMsg);
osw.flush();
//jsp와 통신 성공 시 수행
if(conn.getResponseCode() == conn.HTTP_OK)
{
InputStreamReader tmp = new InputStreamReader(conn.getInputStream(),"UTF-8");
BufferedReader reader = new BufferedReader(tmp);
StringBuffer buffer = new StringBuffer();
//jsp에서 보낸 값을 받는 부분
while((str = reader.readLine()) != null)
{
buffer.append(str);
}
receiveMsg = buffer.toString();
}
else
{
System.out.println("통신에 실패하였습니다.");
//통신실패
}
}
catch(MalformedURLException e) { e.printStackTrace(); }
catch(IOException e) { e.printStackTrace(); }
//jsp로 부터 받은 리턴값
return receiveMsg;
}
}
메인액티비티
- MainActivity.java
package com.example.loginexample;
import androidx.appcompat.app.AppCompatActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class MainActivity extends AppCompatActivity
{
Button registerBtn;
EditText idet, pwet;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("ORACLE");
registerBtn = (Button) findViewById(R.id.register_btn);
idet = (EditText) findViewById(R.id.register_id);
pwet = (EditText) findViewById(R.id.register_pw);
registerBtn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
try
{
Toast.makeText(MainActivity.this,"버튼눌림",Toast.LENGTH_SHORT).show();
String result;
String id = idet.getText().toString();
String pw = pwet.getText().toString();
RegisterActivity task = new RegisterActivity();
result = task.execute(id, pw).get();
}
catch (Exception e)
{
Log.i("DBtest", ".....ERROR.....!");
}
}
});
}
}
이와 같이 수행을 하면 오류는 나지 않지만 안드로이드에서 제가 입력한 아이디와 비밀번호 값이 제가 생성한 db로 넘어가지 않는것 같습니다.
실행을 하면 레지스터 엑티비티 에서 통신에 실패했을시에 확인을 할수 있도록 제가 임의로 넣은
"통신에 실패하였습니다." 라는 문구가 뜹니다. 오류는 나지 않는데 왜 계속 연결이 안되는 걸까요??
메니페스트 xml 파일에 "<uses-permission android:name="android.permission.INTERNET"/>" 의 인터넷 접속 권한을 주는 문구까지 작성을 했는데 계속 되지 않습니다 ㅠㅠ