# PutMethod - Uhrzeit aus Response



## huckleberry (27. Jun 2012)

Hallo,

Ich habe eine PutMethode welche einen Inhalt an ein Server schickt:


```
PutMethod putMethod = new PutMethod( get_Host() );
		putMethod.setDoAuthentication(false);
		try {
			putMethod.setRequestHeader("Content-Type", "text/plain");
			putMethod.setRequestEntity(new StringRequestEntity(content, null, null));
			putMethod.setContentChunked(true);
			httpClient.executeMethod(putMethod);
			String response = putMethod.getResponseBodyAsString();
			TpegCanListener.resetStringToSend(response);
			LOG.logDebug("Statuscode: {0}", String.valueOf(putMethod.getStatusCode()) );
			LOG.logDebug("RequestHeaders: {0}", String.valueOf(putMethod.getRequestHeaders().toString()) );
			LOG.logDebug("Response: {0}", response);
```

Ich würde gerne die Uhrzeit aus der Response abgreifen; s. Anhang.

Jemand ne Idee?

Vielen Dank!


----------



## achillesat (27. Jun 2012)

Vielleicht funktioniert das mit einem Thread der aus der Response die Uhrzeit abgreift...


----------



## nillehammer (27. Jun 2012)

Die 
	
	
	
	





```
PutMethod
```
 ist eine Subklasse von 
	
	
	
	





```
HttpMethod
```
. Diese stellt Dir eine Methode 
	
	
	
	





```
getResponseHeader(String headerName)
```
 zur Verfügung. Mit dem Namen "Date" kommst Du an den Date-Header ran.

P.S. Ich bin fast sicher, dass Du die falsche Methode benutzt. Müsste es nicht eher ein POST sein?


----------



## huckleberry (27. Jun 2012)

Genau das wars!


```
getResponseHeader("Date")
```



nillehammer hat gesagt.:


> P.S. Ich bin fast sicher, dass Du die falsche Methode benutzt. Müsste es nicht eher ein POST sein?


Post würde auch gehen, aber auf jeden Fall funktioniert es mit put. Hast du überzeugende Argumente?


----------



## huckleberry (28. Jun 2012)

Den String kann ich nun erfolgreich abgreifen, jedoch kann ich nicht parsen.

Debugausgabe:


> Date: Thu, 28 Jun 2012 15:31:25 GMT



Code:
[JAVA=1]
	String dateString = putMethod.getResponseHeader("Date").toString();
	LOG.logDebug("getResponseHeader(Date): {0}", dateString );

	SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");
	Date d;
	try {
		d = format.parse(dateString);
		LOG.logDebug("Date: {0}", d.toString() );
	} catch (ParseException e) {
		e.printStackTrace();
	}
[/code]

Bei Zeile 7 kommt folgender Fehler:


> java.text.ParseException



Mein Verdacht ist das "Date: " am Anfang der Ausgabe oben muss weg?


----------



## SlaterB (28. Jun 2012)

die Ausgabe 
> Date: Thu, 28 Jun 2012 15:31:25 GMT
passt nicht zu 
> LOG.logDebug("getResponseHeader(Date): {0}", dateString );
da 'getResponseHeader' fehlt,

viel eher passt die Ausgabe zu Zeile 8:
> LOG.logDebug("Date: {0}", d.toString() );
da sowohl 'Date: ' am Anfang stimmt, als auch der Rest gut als d.toString() zu interpretieren ist

das spricht dann komplett gegen eine Exception in Zeile 7.., 
andererseits hast du 'java.text.ParseException', vielleicht von einem zweiten Durchlauf?


->
räume erstmal deine Logs und sonstigen Abläufe auf, 
du kannst nicht über 'Date: ' in einem String spekulieren während du gleichzeitig 'Date: ' in deinen Log-Ausgaben hast!..

jede Methode muss klar kontrolliert sein, dazu gehört im Zweifelsfall so viel mit jeweils unmissverständlichen Log-Inhalt:

```
Ausgabe vor dem try-Catch mit Parameter, evtl. Zeit,
try {
Ausgabe im try bevor es kritisch wird

kritische Stelle

Ausgabe im try nach kritischer Stelle, zeigt an (wenn vorhanden) dass keine Exception auftrat
} catch ... {
   Ausgabe im catch der Exception
} finally {
   nachrangige Ausgabe zum Abschluss, sollte immer vorhanden sein, sonst nix sicher zu interpretieren
}
Ausgabe nach all der Arbeit, kommt nicht wenn Methode mit einer nicht abgefangenen 
(Runtime-)Exception verlassen wird
```


----------



## huckleberry (12. Jul 2012)

Jupp, es lag am Date am Anfang im String, was dazu führte dass falsch geparst wurde.. 

Behoben, Thnx!


----------

