PythonのコードをVBかC#に変換したいです。
目的は学習です。
Pythonコードは正常に動作している物で
VBコードは現在動作していない物です。
元のPythonコードと、私が書いたVBコードを載せます。
例外エラーなどは出ず処理は一応実行できますが、動作しない状況です。
私が書いたVBコードはどこが間違えているのかご教示願いたいです。
Python
1import requests 2import json 3# csvファイル取得 4def get_csv(groupcodes, commandbytes): 5 url = 'http://192.168.14.100:7001/testapi/sendbroadcastcommand?groupcodes={}&commandbytes={}'. format(json.dumps(groupcodes), json.dumps(commandbytes)) 6 print(url) 7 headers = { 8 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' 9 } 10 try: 11 response = requests.post(url=url, headers=headers) 12 except Exception as e: 13 print("POST 例外発生!") 14 print(e) 15 return -1 16 if response.status_code != 200: 17 print("POST 応答エラー") 18 return -2 19if __name__ == '__main__': 20 grcd1 = ['A','B'] 21 cmdbyte1 = [4, 17, 0, 234] 22 try: 23 get_csv(grcd1, cmdbyte1) 24 except Exception as e01: 25 print("get_scv()の中に例外発生!") 26 print(e01)
VB
1Imports Newtonsoft.Json 2Public Class Form1 3 Public Class testjson 4 Public Property groupcodes As String 5 Public Property commandbytes As String 6 'Public Property sikaku As String() 7 End Class 8 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 9 Dim ret As Int32 10 'Dim postData As String 11 Dim postDataBytes As Byte() 12 Dim req As System.Net.WebRequest 13 Dim reqStream As System.IO.Stream = Nothing 14 Dim res As System.Net.WebResponse = Nothing 15 Dim resStream As System.IO.Stream = Nothing 16 Dim sr As System.IO.StreamReader = Nothing 17 Try 18 Dim syain1 As testjson = New testjson() 19 syain1.groupcodes = "['A','B']" 20 syain1.commandbytes = "[4, 17, 0, 234]" 21 Dim Json As String = JsonConvert.SerializeObject(syain1) 22 'バイト型配列に変換 23 postDataBytes = System.Text.Encoding.UTF8.GetBytes(Json) 24 'WebRequestの作成 25 req = System.Net.WebRequest.Create("http://192.168.14.100:7001/testapi/sendbroadcastcommand") 26 'メソッドにPOSTを指定 27 req.Method = "POST" 28 'ContentTypeを"application/json"にする 29 req.ContentType = "application/json" 30 ''POST送信するデータの長さを指定 31 req.ContentLength = postDataBytes.Length 32 req.Proxy = Nothing 33 'データをPOST送信するためのStreamを取得 34 reqStream = req.GetRequestStream() 35 '送信するデータを書き込む 36 reqStream.Write(postDataBytes, 0, postDataBytes.Length) 37 ret = 0 38 Catch ex As Exception 39 'エラーコードの設定 40 ret = 100 41 Finally 42 If IsNothing(reqStream) = False Then 43 reqStream.Close() 44 End If 45 If IsNothing(sr) = False Then 46 sr.Close() 47 End If 48 End Try 49 End Sub 50End Class
質問投稿前に表示される日本語の確認事項すら理解できないのであれば、たぶん小学生ぐらいからお勉強をやりなおさないと無理じゃないですかね。
プログラミングは『こう書けばよい』ではないです。
今回のは質問ではなく、依頼または『命令』です。
「俺様は努力したくないからアンタらがやれ。は? アンタ、カネ取んの?
うぜぇ…」と言っているのと大差ありません。
回答者はカネを貰ってやっているのではなく、善意からやっています。
それなのに『自分は努力せずに』、『他人がやるのが当たり前』なのでしょうか。
あまりにも他人を舐めすぎ。
質問の修正を確認しました。
それでも『自分でやりましょう』です。
そもそもプログラミングは『書いて終わり』…ではありません。
デバッグやテストまで含みます。
少なくともデバッグまでは当たり前の技術です。(プログラミングをやるからには)
まずは自分でデバッグしましょう。
仮に自分でデバッグしたができない…というのなら『質問方法を工夫しましょう』です。
回答者は当事者じゃ無いので提示された情報からしか読み取れません。
なので、『試したこととその結果』とかを載せましょう。
そうしないと、回答者も質問者さんがやったこともすべて試さないといけないので時間の無駄です。
質問者さんが試したこととその結果とかを出せば、その部分は考慮しなくても済むので時間短縮ができます。
まずは自分でデバッグすることと質問方法を工夫することをやってください。
「処理は一応実行できますが、動作しない」って書いて伝わると本気で思ってるの?
丸投げじゃないなら、期待する動作と実際の結果がどのようになるのか、ぐらい詳細に説明するべきだし、自分でどのあたりの処理がおかしいと思い、何を調べたかぐらい書こうや。
こうやって1から10まで指示されないと質問文すら満足に書けないなら、プログラミングなんてできるわけがない。
何を作っているか書いてください。Windows Forms? WPF? ASP.NET Web Forms? その他?
開発環境を書いてください。OS, Visual Studio のバージョン、.NET Framework or Core のどっちかとそのバージョンなど。
読んで質問内容を見直しましょう→ https://teratail.com/help/question-tips
特に「2. 質問をする前に自分で何がわからないのかを把握しましょう」のあたり。今は何もわかってなくて、何が分かれば解決できるのかを文書化できないのでは?
Python のコードを見ると、Web API に対して URL にクエリ文字列を情報として追加し POST 要求をかければ、CSV 形式のデータが応答として返ってくるということのようですが、VB のコードはそうなっていないようです。分かって書いてないのでは?
> 目的は学習です。
大変効率が悪そうです。
入門書を読むところから始めた方がいいでしょう。
> 目的は学習です。
「何の」学習でしょうか?
それと、VB.NET は開発終了したので、今後の .NET のバージョンアップから取り残されることがアナウンスされています。
.NET 6 以降は VB.NET をサポートしません(無理やり使える部分がなくはありませんが保証はされません)。
今から学習しても仕事は減る一方でしょう。
> 回答得られない為、本質問は取りやめます。
回答が得られない最大の原因は自分の質問の仕方の問題だと認識できない人なのだろうね。ゆとり教育の成果かなぁ・・・
返事も何もしないで回答が得られないってそりゃ当然だろとしか。
> 回答得られない為、本質問は取りやめます。
その言い分だと、『俺様は悪くない! 回答者が悪いんだ!』としか読めませんよ?
そこまで暴言を吐く態度なら、全て自分でやるべきでは。
回答者は善意でやっており、回答する義務はありません。
回答2件
あなたの回答
tips
プレビュー