- PR -

クライアント(VB) サーバ(JAVA)

1
投稿者投稿内容
おじさんラガー
会議室デビュー日: 2004/02/27
投稿数: 2
投稿日時: 2004-02-27 16:25
クライアント(VB)の画面の情報をサーバ(JAVA)にPOSTした情報をgetParameterで取得したいのですが、うまくいきません。
getInputStreamでは取得できているのですが・・・・
VB側はWininetAPIを使用しています。
誰かわかる方、教えてください。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-02-27 16:38
引用:

クライアント(VB)の画面の情報をサーバ(JAVA)にPOSTした情報をgetParameterで取得したいのですが、うまくいきません。
getInputStreamでは取得できているのですが・・・・
VB側はWininetAPIを使用しています。


これじゃあちょっとなんとも言えませんよ。
せめて、プラットフォーム(クライアントはWindowsでしょうけれど、VBなのでOSの
バージョンも分かった方が良いでしょう。サーバはJavaというだけでは分からないので
具体的に書いて下さい)やVB、Javaのバージョンも書いて下さい。

恐らく、サーバ(Java)にPOSTと書かれているので、VBのクライアントとServletの
通信を行っているということで良いですよね?うまくいかないというのは、何か
エラーが出るのでしょうか。その場合はエラーの内容を投稿されると解決策が
すぐに見つかるでしょう。

それから、ともかくHTTP通信がうまく行っているかのチェックを先にやった方が良いと
思われますので、そちらを先に行ったら如何でしょう。簡単なところだと、netstatで
HTTPコネクションが張られたかどうかを確認するとか、あとはApacheのAxisという
プロジェクトでHTTP通信を横取りしてGUIに表示できるツール(tcpmonというPure
JavaのGUIツールです)を提供していますので、それを使うとか。

Apache Web Services - Axis
http://ws.apache.org/axis/index.html


[ メッセージ編集済み 編集者: おばけ 編集日時 2004-02-27 16:39 ]
おじさんラガー
会議室デビュー日: 2004/02/27
投稿数: 2
投稿日時: 2004-02-27 18:15
おばけさん

クライアントはWin2000またはWinXPでVB6.0、サーバはWin2000でWebSphere5.0、JAVAはJ2SE1.4.2

ソースコードは
<VB>
pl_hInet = InternetOpen(App.EXEName, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
pl_hConnect = InternetConnect(pl_hInet, cons_ps_PROVIDER, INTERNET_DEFAULT_HTTPS_PORT, vbNullString, vbNullString, INTERNET_SERVICE_HTTP, 0, 0)
l_hRequest = HttpOpenRequest(pl_hConnect, "POST", hs_Address, vbNullString, vbNullString, 0, INTERNET_FLAG_SECURE, 0)
l_Win32apiResultCode = HttpSendRequest(l_hRequest, vbNullString, Len(vbNullString), hs_SendData, Len(hs_SendData))

※hs_SendData="DATE=12MAR2004"

<Servlet>
public class LinxServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

System.out.println("##### Date -> " + (String)req.getParameter("DATE"));
  //##### Date -> null と表示される
System.out.println("##### Length-> " + req.getContentLength());//
  //##### Length-> 14 と表示される
ServletInputStream myIS = request.getInputStream();
InputStreamReader myISR = new InputStreamReader(myIS);
BufferedReader myBR = new BufferedReader(myISR);
StringBuffer myID = new StringBuffer();
String buf = new String();
strRet = "";
while ((buf = myBR.readLine()) != null) {
myID.append(buf);
System.out.println("##### getRequestData-> "+buf);
//##### getRequestData-> DATE=12MAR2004 と表示される
strRet += buf;
}
}

です。
宜しくお願いします。
taro
ぬし
会議室デビュー日: 2003/10/20
投稿数: 316
投稿日時: 2004-02-27 19:36
VBは知らないのではずしてたらごめんなさい。
HTTPリクエストって改行で終わる必要があるように思うのですが、
 hs_SendData="DATE=12MAR2004\r\n"
のようにしてみるといかがでしょうか?
顔爺
ベテラン
会議室デビュー日: 2003/10/03
投稿数: 52
投稿日時: 2004-02-27 22:58
引用:

HttpSendRequest(l_hRequest, vbNullString, Len(vbNullString), hs_SendData, Len(hs_SendData))



POST の場合、ヘッダに Content-type: application/x-www-form-urlencoded
を指定する必要があった気がします。
1

スキルアップ/キャリアアップ(JOB@IT)