2014-10-03 2 views
1

현재 Android 네이티브 및 MySQL을 사용하고 있습니다. 둘 다 연결하기 위해 자바와 REST를 사용했다. 그러나, 내 REST 서비스를 실행하려고했을 때 아무 응답도받지 못했습니다 (단지 빈 페이지가 나타남). 로그 확인을 시도했는데 오류가 발생했습니다. 여기 내 코드입니다 : - 데이터베이스 연결 파일Android Java 및 REST를 사용하여 MySQL에 연결

package datasource; 

import java.sql.Connection; 
import java.sql.DriverManager; 

public class Database 
{ 
    @SuppressWarnings("finally") 
    public static Connection createConnection() throws Exception { 
     Connection con = null; 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/friseur", "root", ""); 
     } catch (Exception e) { 
      throw e; 
     } finally { 
      return con; 
     } 
    } 
} 

QueryPhoto.java -

Database.java 데이터베이스에서

package query; 

import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 

import datasource.Database; 
import model.Photo; 

public class QueryPhoto { 
    public static ArrayList<Photo> GetPhoto() throws Exception 
    { 
     ArrayList<Photo> photo = new ArrayList<Photo>(); 
     Connection dbConn = null; 
     try { 
      try { 
       dbConn = Database.createConnection(); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      Statement stmt = dbConn.createStatement(); 
      String selectPhoto = "SELECT * FROM photo, user where photo.user_id = user.id"; 
      ResultSet rs = stmt.executeQuery(selectPhoto); 
      while(rs.next()) 
      { 
       Photo photoObject = new Photo(); 
       photoObject.setPDateUpload(rs.getString("added_time")); 
       photoObject.setPUrlOriginal(rs.getString("url_original")); 
       photoObject.setPUrlWithHair(rs.getString("url_with_hair")); 
       photoObject.setCaption(rs.getString("caption")); 
       photoObject.setUserId(Integer.parseInt(rs.getString("user_id"))); 
       photoObject.setUserName(rs.getString("username")); 

       photo.add(photoObject); 
      } 
     } 
     catch (SQLException sqle) { 
      throw sqle; 
     } 
     catch (Exception e) { 
      // TODO Auto-generated catch block 
      if (dbConn != null) { 
       dbConn.close(); 
      } 
      throw e; 
     } 
     finally { 
      if (dbConn != null) { 
       dbConn.close(); 
      } 
     } 
     return photo; 
    } 
} 

PhotoJson.java를 조회하려면 - JSON 객체

를 구성하는
package queryresult; 

import org.codehaus.jettison.json.JSONException; 
import org.codehaus.jettison.json.JSONObject; 
import java.util.*; 

import model.Photo; 

public class PhotoJson { 
    public static String constructJSON(ArrayList<Photo> photo) { 
     JSONObject obj = new JSONObject(); 
     try { 
      for (int i = 0; i < photo.size(); i++) { 
       Photo photoObj = photo.get(i); 
       obj.put("date_upload", photoObj.getPDateUpload()); 
       obj.put("url_original", photoObj.getPUrlOriginal()); 
       obj.put("url_with_hair", photoObj.getPUrlWithHair()); 
       obj.put("caption", photoObj.getCaption()); 
       obj.put("user_id", photoObj.getUserId()); 
       obj.put("username", photoObj.getUserName()); 
      } 
     } catch (Exception e) { 

     } 
     return obj.toString(); 
    } 
} 

GetPhoto.java - REST의 경우

package webservice; 

import java.util.ArrayList; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import model.Photo; 
import query.QueryPhoto; 
import queryresult.PhotoJson; 

@Path("/WebService") 
public class GetPhoto { 

@POST 
@Path("/GetPhotos") 
@Produces("application/json") 
public String photo() 
{ 
    String response = null; 
    try 
    { 
     ArrayList<Photo> photo = QueryPhoto.GetPhoto(); 
     response = PhotoJson.constructJSON(photo); 
    } 
    catch (Exception e) 
    { 
     System.out.println("Exception Error"); //Console 
    } 
    return response; 
    } 
} 

의 web.xml은

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>useraccount</display-name> 
     <servlet> 
      <servlet-name>Jersey REST Service</servlet-name> 
      <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
      <init-param> 
        <param-name>com.sun.jersey.config.property.packages</param-name> 
        <param-value>webservice</param-value> 
      </init-param> 
      <load-on-startup>1</load-on-startup> 
     </servlet> 
     <servlet-mapping> 
      <servlet-name>Jersey REST Service</servlet-name> 
      <url-pattern>/*</url-pattern> 
     </servlet-mapping> 
</web-app> 

실제로 문제가 있습니까? 도와 줘서 고마워.

+0

당신이 호출하는 어떤 URL :

@GET로 주석은 다음 문제를 해결할 변환 가능한? 'POST' 또는'GET'으로 호출하고 있습니까? –

답변

1

올바른 URL을 사용한다고 가정하면 문제는 POST 요청에 응답하도록 메서드가 주석 처리되는 동안 HTTP GET 요청 (빈 페이지가 표시됨)을 보내는 것일 가능성이 큽니다.

@GET 
@Path("/GetPhotos") 
@Produces("application/json") 
public String photo() { /* ... */ } 
+0

네, 맞습니다 : D – pokopang