# Eine Form an einen fremden Server schicken.



## Wyvern (28. Feb 2007)

Hallo

Ich entwickel einen Webshop mit Java und Struts. 

Um die Bezahlung per Kreditkarte zu ermöglichen muß ich eine Form mit Daten (bei mir hidden fields) per POST an den Bankserver schicken. 

Im Moment mach ich es so, daß ich beim Aufruf der Seite die betreffende Action (die ja auch in der form angegeben wurde, und die auch in der Struts-config steht) ausführe, und die hidden Fields automatisch füllen lasse. 

Die Fields jag ich vorher auch noch durch nen Parser, der unsichere Zeichen in sichere umwandelt (wird von der bank so gewünscht)

```
/*-----------------------------------------------------------------------*
	* html Encode non safe ascii chars < 127
	*-----------------------------------------------------------------------*/
	final private static String SAFE_CHARS  =   "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	                                             + "abcdefghijklmnopqrstuvwxyz"
	                                             + "0123456789_.-";
	final private static String htmlEncode(String str) {
		int len = str.length();
		StringBuffer encoded = new StringBuffer(len*6);
		for(int i=0; i<len; i++) {
			if(SAFE_CHARS.indexOf(str.charAt(i)) >= 0) {
				encoded.append(str.charAt(i));
			} else {
				int c = (int) str.charAt(i);
				if(c <= 0x7F) {
					encoded.append("&#x" + Integer.toHexString(c) + ";");
				} else {
					encoded.append(str.charAt(i));
				}
			}
		}
	return encoded.toString();
	}
```

Beim Submit mach ich folgendes. 
Ich erstelle einen String aus 
	
	
	
	





```
https://www.BankURL.cgi?Param1&Param2&Param3
```
... 

Das Ergebnis jag ich durch encodeRedirectURL() und schicke ihn mit sendRedirect() ab. 

```
response.sendRedirect(response.encodeRedirectURL(ResponseQuery));
```
Kommt dabei dann genau das selbe raus, als hätte ich die BankURL in der Form als action angegeben? (Das geht ja nicht, weil ich die Form nicht mit meiner eigenen Action füllen könnte) 
Oder gibts da Unterschiede? Vielleicht in der Zeichencodierung?


----------



## Ralf Ueberfuhr (1. Mrz 2007)

Also der erste Unterschied wäre der zwischen den HTTP-Methoden GET und POST.


----------



## Wyvern (5. Mrz 2007)

Mir wurde gerade gesagt, daß es einen Unterschied macht, ob ich 

1. eine Form per Post versende, oder 
2. eine URL aus einer Form zusammenbastel, und mittels 

```
response.sendRedirect(response.encodeRedirectURL(ResponseQuery));
```
versende.

Kann mir jemand etwas genaueres darüber sagen? 
Ist es möglich, einer Form in einer JSP als Action eine fremde URL mitzugeben? Müsste diese URL dann irgendwie in die Struts config eingetragen werden? Wenn ja, wie?


----------



## Wyvern (5. Mrz 2007)

SO, Struts für die Seite weggeworfen, und einfach statt ne FormBean ne einfache Bean genommen, und auf plain html umgestiegen. Anders gehts scheints net.


----------

