c# - "Request format is invalid"

标签 c# objective-c http webserver webmethod

尝试连接到以下 Web 方法时,返回“请求格式无效”:

public string myWebMethod(string test)
{
    return "connected";
}

这是 Objective-C 代码:

NSString *seshID = @"test-session";       
NSString *post = [NSString stringWithFormat:@"test=%@", seshID];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

NSString *comparisonURLString = SERVER_COMPARE_URL_STRING;
NSURL *comparisonURL = [NSURL URLWithString: comparisonURLString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:comparisonURL];

[request setHTTPMethod:@"POST"];
[request addValue:postLength forHTTPHeaderField:@"Content-Length"];

NSHTTPURLResponse *urlResponse = nil;
NSError *error = nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];

NSString *response = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];    
NSLog(response);

但是,如果我改变 web 方法使其不带参数:

public string myWebMethod()

并将我的 obj-c 代码中的相应行更改为:

NSString *post = [NSString stringWithFormat:@""];

有效,响应:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">connected</string>

谁能解释为什么后者似乎有效而前者无效?谢谢。

最佳答案

我在 JAVA WebMethod 和 C# 之间遇到了类似的问题。通过创建继承自 SoapHeader 并包含字符串 [] 的类 string1 解决了该问题。

那么对于你的例子,你可以试试这个

public string myWebMethod(string[] test)
{
    return "connected";
}

public string myWebMethod(char[] test)
{
    return "connected";
}

您也可以使用 Fiddler 检查真正传递的数据类型。

关于c# - "Request format is invalid",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13492705/

相关文章:

c# - 任务处理的差异

objective-c - 基于父类(super class)中的 NSInteger 属性使用 NSPredicate 过滤对象数组

java - 从刷新 token 获取访问 token 失败,并出现 invalid_grant 错误,并且错误请求或 token 已过期或撤销作为错误描述

Python:HTTP 发布带有流式传输的大文件

c# - 如何从电子表格中删除过滤后的数据?

javascript - 使用空白 MVC 路由和 HttpGet 请求 Controller

iphone - iOS 在数组中存储和加载多个 Web View

objective-c - 此 View 动画概念的正确干净且线程安全的设计

C#/Winform : Enter data into HTML page, 提交表单

c# - 使用正则表达式匹配包含数字字母和破折号的字符串