2014-12-22 38 views
0

我想從android客戶端應用程序向java web服務傳遞參數。但我得到錯誤。我的Java Web服務代碼如下:從Android客戶端應用程序使用HttpPost將參數傳遞給java web服務方法時出錯

public class JsonWebService { 
    @POST 
    @Path("getData") 
    public String getData(String category) throws Exception { 
     JSONObject jsonData = new JSONObject(); 
     String Email = ""; 
     String Name = ""; 
     String receivedCat = ""; 
     boolean status = false; 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost/admindb","root",""); 
      java.sql.PreparedStatement query = con.prepareStatement("SELECT * FROM sample WHERE Category =" + "'" + category + "'" + ";"); 
      ResultSet result = query.executeQuery(); 

      while(result.next()){ 
       receivedCat = result.getString("Category"); 
       Name = result.getString("Name"); 
       Email = result.getString("Email"); 
      } 
      if(receivedCat.equals(category)){ 
       status = true; 
       jsonData.put("Name",Name); 
       jsonData.put("Email", Email); 
       jsonData.put("status", status); 
      } 
     } 
     catch(Exception e) { 
      e.printStackTrace(); 
     } 
    return jsonData.toString(); 
} 

我的Android客戶端代碼如下:

btnCategory = (Button)findViewById(R.id.button1); 
txtCategory = (EditText)findViewById(R.id.editText1); 
gridV = (GridView)findViewById(R.id.gridView1); 
txtName = (EditText)findViewById(R.id.editText3); 
txtEmail = (EditText)findViewById(R.id.editText2); 

btnCategory.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    // TODO Auto-generated method stub 
     Thread netThread = new Thread() { 
      public void run() { 
       try { 
        final JSONObject receivedJson;// = new JSONObject(); 
        String URL = "http://192.168.1.7:8080/JsonWebService/services/JsonWebService/getData"; 
        StringEntity params = new StringEntity("{\"category\":\"Marketing\"}"); 
        DefaultHttpClient httpClient = new DefaultHttpClient(); 
        HttpPost post = new HttpPost(URL); 
        post.setEntity(params); 

        HttpResponse httpres = httpClient.execute(post); 
        HttpEntity entity = httpres.getEntity(); 
        String json = EntityUtils.toString(entity).toString(); 
        String parts[] = json.split("<ns:return>"); 
        parts = parts[1].split("</ns:return>"); 
        String jsonPart = parts[0]; 
        receivedJson = new JSONObject(jsonPart); 
        runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         try { 
          txtName.setText(receivedJson.getString("Name")); 
          txtEmail.setText(receivedJson.getString("Email")); 
         } 
         catch(Exception e){      
         } 
        } 
       }; 
      netThread.start(); 
      } 
     }); 
} 

我收到以下錯誤:

Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<' at [row,col {unknown-source}]: [1,1] 
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:648) 
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2047) 
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069) 
at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225) 
at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:668) 
at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214) 
    ... 26 more 
[INFO] Remaining input stream :[] 

請幫我解決這個問題...謝謝...

+0

嘗試使用invokeHttp – Anto

回答

0

您的webservice方法不期待json作爲輸入媒體類型。

。利用JAX-RS speficication的@Consumes和@Produces註解告訴你的服務有什麼期望和如何提供:

@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8") 
@Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8") 

您可能還需要包括球衣,JSON庫項目。

+0

我試過了,但沒有奏效。發生相同的錯誤。請幫助... –

+0

當您嘗試從普通網絡瀏覽器中點擊它時,您的網絡服務是否可以正常工作? - 有一些非常棒的Google Chrome應用可用於測試Web服務(例如https://www.google.at/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CB8QFjAA&url=https%3A %2F%2Fchrome.google.com%2Fwebstore%2Fdetail%2Fdhc-resthttp-API的客戶端%2Faejoelaoggembcahagimdiliamlcdmfm&EI = U0CZVN39NsnuUrOJg6AL&USG = AFQjCNFROYTZSrX0KNMaJy5Xyc02IvcSnw&SIG2 = satguz9z02JAxFM9WU2CPQ&BVM = bv.82001339,d.bGQ) – azraelAT

相關問題