好吧所以我已经在我的c#脚本中添加了一个函数来获取ip地址并将输出作为字符串发送到变量heres my source
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
答案 0 :(得分: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
中的静态方法的上下文中,因此您在该类(Main
类)上从Program
调用的任何内容也需要是静态的,除非你像这样创建Program
的实例:
var program = new Program();
这将允许您在Program
上调用实例方法:
program.SomeNonStaticMethod();
但对于像这样的小型应用程序,这并不是必需的。