2017-03-13 1 views
0

JSONオブジェクトを作成して投稿しようとしています。AndroidでJSONオブジェクトを投稿できない

以下は私がビールを投稿するために使用しているコードです。

このビールを取得しようとすると、FileNoteFoundExceptionが届きます。誰かがオブジェクトが正常に投稿されていない理由を教えてください。

私は以下の関連コードであると感じるものを投稿しました。ここで

public void postABeer(final int beerId, final Handler h) { 

     new Thread (myThreadGroup, new Runnable() { 

      @Override 
      public void run() { 

       BeerAdapter ba = new BeerAdapter(); 
       Beer newBeer = new Beer(); 
       newBeer = ba.createBeer("{\"ID\":\"973\", \"Name\":\"Beer\", \"Price\":\"4.99\", \"Comment\":\"bla\", \"LastModified\":\"196\"}"); 

       //Do background stuff here. 
       String s = HttpHandler.HttpPostExec(MainActivity.baseURI 
         + "beer/" + beerId, newBeer.toString()); 

       //Start of artificial delay.Comment out if not wanted. 
       try { 
        Thread.sleep(3000); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       //End of artificial delay. 

       Message m = new Message(); 
       m.obj = s; 
       h.sendMessage(m); 

      }//end run() 

     }).start(); 

    }//end postABeer() 

は私BeerAdapterです:

ここ
public class BeerAdapter { 

public static final Beer convertToBeer (String beerString) { 
    Gson g = new Gson(); 
    Beer b = g.fromJson(beerString, Beer.class); 
    return b; 
} 

public static final Beer createBeer (String beerString) { 
    Gson g = new Gson(); 
    Beer b = g.fromJson(beerString, Beer.class); 
    return b; 
} 

}

私のビールクラスです:

public Beer(String ID, String name, String price, String comment, String lastModified) { 
    this.ID = ID; 
    Name = name; 
    Price = price; 
    Comment = comment; 
    LastModified = lastModified; 
} 

@Override 
public String toString() { 
    return "Beer{" + 
      "ID='" + ID + '\'' + 
      ", Name='" + Name + '\'' + 
      ", Price='" + Price + '\'' + 
      ", Comment='" + Comment + '\'' + 
      ", LastModified='" + LastModified + '\'' + 
      '}'; 
} 

そしてここでは、Putステートメントである:

public static final String HttpPutExec (String uri, String payload) { 

    String s = "no response"; 
    HttpURLConnection conn = null; 
    int http_status = 0; 

    try { 
     byte[] payloadBytes = payload.getBytes(); 
     URL url = new URL(uri); 

     conn = (HttpURLConnection)url.openConnection(); 
     conn.setDoOutput(true); 
     conn.setRequestMethod("PUT"); //We be doing a PUT 
     conn.setRequestProperty("Content-Type", "application/json"); //We are sending JSON 
     conn.setFixedLengthStreamingMode(payloadBytes.length); 

     OutputStream out = conn.getOutputStream(); 

     out.write(payloadBytes); 

     InputStream in = conn.getInputStream(); 
     http_status = conn.getResponseCode(); 

     if (http_status == 200) { 
      s = streamToString(in); 
     } else { 
      s = "bad response"; 
     } 
    } catch (MalformedURLException m) { 
     s = "malformed URL exception"; 
    } catch (IOException e) { 
     s = e.toString(); 
    } finally { 
     conn.disconnect(); 
    } 
    return s; 

} 

エラー:

03/13 21:52:08: Launching MainActivity W/System: ClassLoader referenced unknown path: /data/data/ie.ucc.bis.is4448.is4448servicetestingdemo/lib E/EGL_emulation: tid 4483: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH) W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x8b373540, error=EGL_BAD_MATCH Hot swapped changes, activity restarted E/EGL_emulation: tid 4483: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH) W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x8b373640, error=EGL_BAD_MATCH

+0

のようなPOSTリクエストを送信することができます。参考までに、Gson.toJsonを使用してオブジェクトをJsonにコンサートすることができます。カスタム実装を作成する必要はありません。 – Rockney

+0

@Rockneyこんにちは、私は上になっているエラーを掲載しました。 – user2911539

+0

また、完全なエラーメッセージは次のとおりです。_java.io.FileNotFoundException:http://wirelessward.net/beer/gateway.php/beer/973_ – user2911539

答えて

0

だけretrofitを使用しています。

次に、あなたのスタックトレースなど、あなたの完全な誤りを投稿してください

@POST("users/new") 
Call<User> createUser(@Body User user); 

または

@FormUrlEncoded 
@POST("user/edit") 
Call<User> updateUser(@Field("first_name") String first, @Field("last_name") String last); 
関連する問題