Y
ydoom
Gast
Hallo zusammen,
ich bastel gerade an einem Programm, dass auf die RSS Feeds in meinem Google Reader zugreifen kann.
Ich möchte zum einen die Anzahl meiner ungelesenen Artikel bekommen - das funktioniert wunderbar.
Außerdem möchte ich einen bestimmten Artikel als gelesen markieren, dass funktioniert über ein POST Request. Ich bekomme jedoch immer folgende Exception
Der Quelltext der Methode:
Ich habe schon Google befragt und einige Sachen ausprobiert, aber es hat alles nichts geholfen. Es kann gut sein das mein Fehler sehr grundlegender Natur ist, ich mache HTTP Kommunikation zum ersten Mal.
Ich weiß jedoch das die Authentifizierung funktioniert hat und das die richtige Artikel ID übergeben wird.
lg,
ydoom
ich bastel gerade an einem Programm, dass auf die RSS Feeds in meinem Google Reader zugreifen kann.
Ich möchte zum einen die Anzahl meiner ungelesenen Artikel bekommen - das funktioniert wunderbar.
Java:
public int getUnreadCount() {
try {
URL urlUnread = new URL("http://www.google.com/reader/api/0/unread-count?output=json");
HttpURLConnection cUnread = (HttpURLConnection)urlUnread.openConnection();
cUnread.setRequestProperty("Authorization", "GoogleLogin auth=" + auth);
JSONTokener jtUnread = new JSONTokener(cUnread.getInputStream());
JSONArray jaUnread = ((JSONObject)jtUnread.nextValue()).getJSONArray("unreadcounts");
if(jaUnread.length() != 0) {
int index = -1;
while(!jaUnread.getJSONObject(++index).getString("id").substring(0, 5).equals("user/"));
return jaUnread.getJSONObject(index).getInt("count");
}
else {
return 0;
}
}
catch (Exception e) {
System.out.println("authenticate");
return -1;
}
}
Außerdem möchte ich einen bestimmten Artikel als gelesen markieren, dass funktioniert über ein POST Request. Ich bekomme jedoch immer folgende Exception
Java:
java.io.IOException: Server returned HTTP response code: 400 for URL: [url]http://www.google.com/reader/api/0/edit-tag[/url]
at sun.net.[url]www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436[/url])
at APICommunicator.starItem(APICommunicator.java:137)
at GUI.starCurrentItem(GUI.java:113)
at GUI.actionPerformed(GUI.java:125)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6375)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6140)
at java.awt.Container.processEvent(Container.java:2083)
at java.awt.Component.dispatchEventImpl(Component.java:4737)
at java.awt.Container.dispatchEventImpl(Container.java:2141)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
at java.awt.Container.dispatchEventImpl(Container.java:2127)
at java.awt.Window.dispatchEventImpl(Window.java:2482)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:684)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:643)
at java.awt.EventQueue$1.run(EventQueue.java:641)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:657)
at java.awt.EventQueue$2.run(EventQueue.java:655)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:654)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Der Quelltext der Methode:
Java:
public void starItem(String id) {
try {
URL urlStarItem = new URL("http://www.google.com/reader/api/0/edit-tag");
HttpURLConnection cStarItem = (HttpURLConnection)urlStarItem.openConnection();
cStarItem.setDoOutput(true);
cStarItem.setRequestMethod("POST");
cStarItem.setRequestProperty("Authorization", "GoogleLogin auth=" + auth);
//cStarItem.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
OutputStreamWriter outStarItem = new OutputStreamWriter(cStarItem.getOutputStream());
//outStarItem.write(URLEncoder.encode("a=user/-/state/com.google/starred&s=user/-/state/com.google/reading-list&async=true&i=" + id + "&T=" + auth, "UTF-8"));
outStarItem.write("a=user/-/state/com.google/starred&async=true&s=user/-/state/com.google/reading-list&i=" + id + "&T=" + auth);
outStarItem.close();
//Hier kommt die Exception:
BufferedReader inStarItem = new BufferedReader(new InputStreamReader(cStarItem.getInputStream()));
String decodedString;
while ((decodedString = inStarItem.readLine()) != null) {
System.out.println(decodedString);
}
inStarItem.close();
}
catch (Exception e) {
System.out.println("authenticate");
e.printStackTrace();
}
}
Ich habe schon Google befragt und einige Sachen ausprobiert, aber es hat alles nichts geholfen. Es kann gut sein das mein Fehler sehr grundlegender Natur ist, ich mache HTTP Kommunikation zum ersten Mal.
Ich weiß jedoch das die Authentifizierung funktioniert hat und das die richtige Artikel ID übergeben wird.
lg,
ydoom