你会如何转换std::string成BSTR*?
STDMETHODIMP CMyRESTApp::rest(BSTR data, BSTR* restr)
{
RESTClient restclient;
RESTClient::response resp = restclient.get(data);
Log("Response Status code: %s", resp.code);
Log("Response Body: %s", resp.body);
*restr = // here
return S_OK;
}
Run Code Online (Sandbox Code Playgroud)
我需要转换resp.body,然后返回*restr此处.
我有这个代码,我需要解析/或获取JSON数组作为应用程序中使用的std :: string.
std::string ss = "{ \"id\" : \"123\", \"number\" : \"456\", \"stuff\" : [{ \"name\" : \"test\" }] }";
ptree pt2;
std::istringstream is(ss);
read_json(is, pt2);
std::string id = pt2.get<std::string>("id");
std::string num= pt2.get<std::string>("number");
std::string stuff = pt2.get<std::string>("stuff");
Run Code Online (Sandbox Code Playgroud)
需要的是像std :: string一样检索的"东西" [{ "name" : "test" }]
但是上面的代码stuff只是返回空字符串.可能有什么不对
如果客户端连接到这样的Web服务(JAX-RS):
URL u = new URL(server);
URLConnection con = u.openConnection();
con.setDoOutput(true);
con.getOutputStream().write(stream.toByteArray()); // ByteArrayOutputStream
con.connect();
InputStream inputStream = con.getInputStream();
byte [] urlBytes = new byte [inputStream.available()];
inputStream.read(urlBytes);
url = new String(urlBytes);
Run Code Online (Sandbox Code Playgroud)
那么Web服务接口定义应该是什么?我有:
@POST
@Path("/upload")
@Consumes("image/jpeg")
@Produces(MediaType.TEXT_PLAIN)
String uploadPicture();
Run Code Online (Sandbox Code Playgroud)
但是,当客户端访问时,它会抛出:
[错误]信息:生成jax-rs代理加载器类.[INFO] DEBUG [SynchronousDispatcher] PathInfo:/ blob/upload [INFO] WARN [ExceptionHandler]执行POST/blob/upload失败[INFO] org.jboss.resteasy.spi.UnsupportedMediaTypeException:无法在org中使用内容类型[INFO]. jboss.resteasy.core.registry.Segment.match(Segment.java:117)[INFO]位于org.jboss的org.jboss.resteasy.core.registry.SimpleSegment.matchSimple(SimpleSegment.java:33)[INFO]. resteasy.core.registry.RootSegment.matchChildren(RootSegment.java:327)[INFO]位于org.jboss.resteasy的org.jboss.resteasy.core.registry.SimpleSegment.matchSimple(SimpleSegment.java:44)[INFO]. core.registry.RootSegment.matchChildren(RootSegment.java:327)[INFO] at org.jboss.resteasy.core.registry.RootSegment.matchRoot(RootSegment.java:
该客户端的JAX-RS接口应该是什么?
更新:
这里需要注意的一点是客户端代码已经编译和签名,我不能只是改变它.