我在 Postman 中编写了一个 HTTP 请求,我想在我的应用程序中编写相同的请求。postman 中有一个选项可以查看 C# 请求的代码。在邮递员中,它使用RestSharp显示请求,因为我不想在我的项目中使用外部 NuGet 包,所以我正在尝试使用 .NET Framework 中的对象编写相同的请求。
RestSharp 代码如下所示:
var client = new RestClient("https://login.microsoftonline.com/04xxxxa7-xxxx-4e2b-xxxx-89xxxx1efc/oauth2/token");
var request = new RestRequest(Method.POST);
request.AddHeader("Host", "login.microsoftonline.com");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("undefined", "grant_type=password&client_id=6e97fc60-xxx-445f-xxxx-a9b1bbc9eb2d&client_secret=4lS*xxxxxYn%5BENP1p%2FZT%2BpqmqF4Q&resource=https%3A%2F%2Fgraph.microsoft.com&username=myNameHere%402comp.onmicrosoft.com&password=xxxxxxxxxx6", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令编写相同的请求HttpWebRequest:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://login.microsoftonline.com/0475dfa7-xxxxxxxx-896cf5e31efc/oauth2/token");
request.Method = "GET";
request.Referer = "login.microsoftonline.com";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("grant_type", "password");
request.Headers.Add("client_id", "6e97fc60-xxxxxxxxx-a9bxxxxxb2d");
request.Headers.Add("client_secret", "4lSxxxxxxxxxxxmqF4Q");
request.Headers.Add("resource", "https://graph.microsoft.com");
request.Headers.Add("username", "xxxx@xxxxx.onmicrosoft.com");
request.Headers.Add("password", "xxxxxxxxxxxxx");
HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
Run Code Online (Sandbox Code Playgroud)
但我正在获取 HTML 内容,我认为我需要添加参数而不是标题,如何实现?
我正在尝试将prem上的大文件(1 GB)从代码上传到SharePoint 2013。我遵循了本教程,从NuGet下载了“ Microsoft.SharePointOnline.CSOM”包,并尝试了以下代码:
public Microsoft.SharePoint.Client.File UploadFileSlicePerSlice(ClientContext ctx, string libraryName, string fileName, int fileChunkSizeInMB = 3)
{
// Each sliced upload requires a unique ID.
Guid uploadId = Guid.NewGuid();
// Get the name of the file.
string uniqueFileName = Path.GetFileName(fileName);
// Ensure that target library exists, and create it if it is missing.
if (!LibraryExists(ctx, ctx.Web, libraryName))
{
CreateLibrary(ctx, ctx.Web, libraryName);
}
// Get the folder to upload into.
List docs = ctx.Web.Lists.GetByTitle(libraryName);
ctx.Load(docs, …Run Code Online (Sandbox Code Playgroud) 我有以下方法:
public async IEnumerable<string> GetListDriversAsync()
{
var drives = await graphClient.Drive.Root.Children.Request().GetAsync();
foreach (var d in drives)
yield return d.ToString();
}
Run Code Online (Sandbox Code Playgroud)
但是编译器错误说:
“async 的返回类型必须是 void、Task 或 Task
<T>”
当方法为异步时如何返回 IEnumerable?
我正在使用 AJAX 将文件发送到某些服务器,例如:
$.ajax({
type: 'POST',
async: true,
crossDomain: true,
url: 'http://' + address + '/api/file/upload',
data: formData,
processData: false,
contentType: false,
headers: {
"apiKey": "myKey",
"FileName": "????.txt"
},
success: function (data, textStatus, jqXHR) {}});
Run Code Online (Sandbox Code Playgroud)
代码工作正常,但是当我在标题中放置希伯来文文件名时,出现错误:
错误扫描文件类型错误:无法在“XMLHttpRequest”上执行“setRequestHeader”:值不是有效的 ByteString
标题:"FileName": "????.txt"不起作用。
我有一个框架(600X500),一个JPanel(50X100)和另一个JPanel(200X150),并且
我试图获得以下结果:
我的代码是:
public class BtnsPanel extends JPanel{
public BtnsPanel()
{
setSize(50,100);
setBackground(Color.RED);
}
}
public class DialogPanel extends JPanel{
public DialogPanel() {
setSize(150,150);
setBackground(Color.BLUE);
}
}
public class MainFrame extends JFrame{
public MainFrame()
{
setSize(600,500);
setLayout(new BorderLayout());
add(new BtnsPanel(), BorderLayout.CENTER);
add(new DialogPanel(), BorderLayout.CENTER);
}
public static void main(String[] args){
new MainFrame().setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
代码结果:
那不是预期的结果。
c# ×3
ajax ×1
csom ×1
file-upload ×1
httpclient ×1
java ×1
javascript ×1
multipart ×1
sharepoint ×1
swing ×1
utf-8 ×1