-3

わかりましたので、C# スクリプトに関数を追加して、IP アドレスをフェッチし、出力を変数の文字列として送信しました。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Specialized;
using System.Net;
using System.IO;


namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        string URL = "http://localhost/test2.php";
        WebClient webClient = new WebClient();

        NameValueCollection formData = new NameValueCollection();
        formData["var1"] = formData["var1"] = string.Format("MachineName: {0}", System.Environment.MachineName);
        formData["var2"] = stringGetPublicIpAddress();
        formData["var3"] = "DGPASS";

        byte[] responseBytes = webClient.UploadValues(URL, "POST", formData);
        string responsefromserver = Encoding.UTF8.GetString(responseBytes);
        Console.WriteLine(responsefromserver);
        webClient.Dispose();
        System.Threading.Thread.Sleep(5000);
    }

    private static string stringGetPublicIpAddress()
    {
        throw new NotImplementedException();
    }
        private string GetPublicIpAddress()
    {
        var request = (HttpWebRequest)WebRequest.Create("http://ifconfig.me");

        request.UserAgent = "curl"; // this simulate curl linux command

        string publicIPAddress;

        request.Method = "GET";
        using (WebResponse response = request.GetResponse())
        {
            using (var reader = new StreamReader(response.GetResponseStream()))
            {
                publicIPAddress = reader.ReadToEnd();
            }
        }

        return publicIPAddress.Replace("\n", "");

    }
    }
    }

基本的に私はこの関数を作成しました

private static string stringGetPublicIpAddress()

変数として送信しています

formdata["var2"] = stringGetPublicIpAddress();

このエラーが発生しています

throw new NotImplementedException();  === NotImplementedException was unhandled
4

1 に答える 1

0

あなたは... メソッドを実装していません。あなたはこれを持っています:

private static string stringGetPublicIpAddress()
{
    throw new NotImplementedException();
}

もちろん、そのメソッドを呼び出すたびに、その例外がスローされます。ただし、ここで必要なメソッドを実装したようです。

private string GetPublicIpAddress()
{
    // the rest of your code
}

たぶん、これはコピー/貼り付けエラーの結果ですか? 例外をスローする小さなメソッドを取り除き、実装されたメソッドを静的に変更してみてください。

private static string GetPublicIpAddress()
{
    // the rest of your code
}

次に、これから呼び出す場所を更新します。

stringGetPublicIpAddress();

これに:

GetPublicIpAddress();

これは、コピー/貼り付けエラーが奇妙な方法で間違っているように見えます。あるいは、静的メソッドとインスタンス メソッドの違いに頭を悩ませているのではないでしょうか? メソッドを実装したのに、静的メソッドが必要であるとコンパイラが提案したのかもしれません。ここでは詳しく説明しませんが、静的メソッドとインスタンス メソッド/メンバーについては、読むべきことがたくさんあります。これは、オブジェクト指向プログラミングの重要な概念です。

この特定のケースでは、 の静的メソッドのコンテキストにいるため、次のようなインスタンスを作成しない限り、そのクラス (クラス)Mainから呼び出すものはすべて静的である必要があります。MainProgramProgram

var program = new Program();

これにより、次のインスタンス メソッドを呼び出すことができますProgram

program.SomeNonStaticMethod();

しかし、このような小さなアプリケーションの場合、それは実際には必要ありません。

于 2013-10-06T21:39:13.953 に答える