2011-08-04 7 views
-4

私はインターネットの仕組みに精通していないので、このJavaメソッドが何をしているのか、またはPythonでそれをどのように複製するのが本当によく分かりません。私はurllibsとソケットを含むいくつかの異なるメソッドを試しましたが、何も動作していないようです。私が応答を得る唯一の時間は、応答がxmlの約5行でなければならないときに巨大なHTML文書を得ることになります。JavaをPythonに複製する

大変ありがとうございました。ありがとうございました:)

try { 
      URL url = new URL(sPROTOCOL, sHOSTNAME, sPAGENAME); 
      URLConnection url_con = url.openConnection(); 
      url_con.setDoInput(true); 
      url_con.setDoOutput(true); 
      url_con.setUseCaches (false); 
      url_con.setRequestProperty ("content-type", "application/x-www-form-urlencoded"); 

      String input_xml = make_XML(sAppID, sAppPassword, sUserID, sPassword); 
      if (bDEBUG) { 
        System.out.println("\nINPUT XML------------------\n" + input_xml); 
        System.out.println("\nEND INPUT XML--------------\n"); 
      } 
      BufferedWriter writebuf = new BufferedWriter(new OutputStreamWriter(url_con.getOutputStream())); 
      writebuf.write("XMLData="); 
      writebuf.write(URLEncoder.encode(input_xml, "UTF-8")); //Java 1.4.x and later 
      //writebuf.write(URLEncoder.encode(input_xml)); //Java 1.3.1 and earlier 
      writebuf.flush(); 
      writebuf.close(); 
      writebuf = null; 
      HashMap hm = parseResp(url_con); 
+4

これは、移植に役立つコードでは不十分です。それはカスタムメソッド( 'make_XML'と' parseResp')を呼び出すので、何を返すのかを推測する必要はありません。 –

答えて

1

それは(sPROTOCOLはHTTPでなければならないので、明らかにXMLDATAと呼ばれる単一のPOSTパラメータとして)make_XMLによって生成されたXMLデータを送信し、その後parseRespで応答を処理する、sHOSTNAMEへの接続を開くているように見えます。

pythonではhttplibを使用します。 http://docs.python.org/library/httplib.htmlの最後の例は、同様のことをしています(しかし、3つのパラメータを送信しています)。あなたが投稿したコードは、POSTコンテンツを明示的に書き込むという点で、一種の醜いことに注意してください - PythonではXMLをパラメータとして与えるだけです。

+0

私は次のように応答 "NO XML受け取っ" を取得しています: 'URL = LOCATION ノードがmy_xml = "XML_Data =" + make_XML(APP_ID、app_password、user_IDは、USER_PASSWORD) のparams = urllib.urlencode({' XML_Data ':my_xml}) ヘッダー= {"content-type": "application/x-www-form-urlencoded"} conn = httplib.HTTPSConnection(HOST) conn.request( "POST"、API_URL、params、headers ) レスポンス= conn.getresponse() print response.read() ' – Jon

+1

開始するには、XMLDataで、XML_Dataではありません。より一般的には、私はあなたのプログラム全体をデバッグするつもりはありません。代わりに、既存のプログラムを使用するときとプログラムを使用するときにwiresharkまたはtcpdumpを使用してデータを取得し、それらを比較します。 –

関連する問題