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
のようなPOSTリクエストを送信することができます。参考までに、Gson.toJsonを使用してオブジェクトをJsonにコンサートすることができます。カスタム実装を作成する必要はありません。 – Rockney
@Rockneyこんにちは、私は上になっているエラーを掲載しました。 – user2911539
また、完全なエラーメッセージは次のとおりです。_java.io.FileNotFoundException:http://wirelessward.net/beer/gateway.php/beer/973_ – user2911539