我在允许我使用自己的代码扩展其功能的应用程序中使用它。
它是用 C# 编码的。
Result()将返回它从我的 Node.js 服务器 ( FinalResponse)获得的答案,我将在如下所示的应用程序中访问它,但是当我尝试使用 EchoOut() 时,标题中出现错误。
var returnedValue = Lib.Result();
App.EchoOut(returnedValue); // EchoOut allows you to test the function you wrote, it echoes string on the screen, but in this case, it gives an error.
Run Code Online (Sandbox Code Playgroud)
错误
cannot implicitly convert type void to object
Run Code Online (Sandbox Code Playgroud)
当我Lib.Result()单独测试时,我看到应用程序正在发出请求,但我无法将返回的值分配给变量。
如何将FinalResponse's值分配给returnedValue变量?
我的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace MainNameSpace
{
public class Lib
{
public void Result()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("192.168.1.101:8000/mytest");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream());
string FinalResponse = stream.ReadToEnd();
Console.WriteLine(FinalResponse);
}
}
}
Run Code Online (Sandbox Code Playgroud)
您需要将Result方法的返回类型更改为string并返回,FinalResponse而不是将其写入控制台。
public string Result() // <-- "string" instead of "void"
{
var request = (HttpWebRequest)WebRequest.Create("192.168.1.101:8000/mytest");
using (var response = (HttpWebResponse)request.GetResponse())
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
return reader.ReadToEnd(); // <-- return the result
}
}
Run Code Online (Sandbox Code Playgroud)
使用一次性对象(在本例中为 、 和 类型的对象)和块来包装代码也被认为是一种HttpWebResponse良好Stream的StreamReader做法using。
我还冒昧地使用了var变量的类型,而不是显式地写出变量的类型,因为从声明的右侧来看,类型已经很明显了。