http-request | Java HTTP Request Library | HTTP library
kandi X-RAY | http-request Summary
Support
Quality
Security
License
Reuse
- Get the response as a byte array
- Copy the input stream to the output stream
- Close the output stream
- Gets stream to response stream
- Configure HTTPS connection to trust
- Get the trusted factory
- Create a request writer
- Extract parameter value from header value
- Returns all parameter with the given header value
- Get parameter values from header value
- Returns a string representation of the URL
- Get the last modified time of the response
- Set the nonProxyHosts property
- Returns true if the response code is a 500 error
- Gets the server value
- Set the referer header
- Set chunked mode
- Set connect timeout on connection
- Disconnects the current connection
- Set the read timeout on the connection
- Set the proxy host property
- Enable caching
- Set the if - modified - since header
- Set proxy port
- Get the response message
- Sets whether the connection should follow redirects
http-request Key Features
http-request Examples and Code Snippets
public byte[] serealizeAvroHttpRequestJSON(AvroHttpRequest request) { DatumWriter writer = new SpecificDatumWriter<>(AvroHttpRequest.class); byte[] data = new byte[0]; ByteArrayOutputStream stream = new ByteArrayOutputStream(); Encoder jsonEncoder = null; try { jsonEncoder = EncoderFactory.get() .jsonEncoder(AvroHttpRequest.getClassSchema(), stream); writer.write(request, jsonEncoder); jsonEncoder.flush(); data = stream.toByteArray(); } catch (IOException e) { logger.error("Serialization error " + e.getMessage()); } return data; }
public Schema createAvroHttpRequestSchema(){ Schema clientIdentifier = SchemaBuilder.record("ClientIdentifier").namespace("com.baeldung.avro.model") .fields().requiredString("hostName").requiredString("ipAddress").endRecord(); Schema avroHttpRequest = SchemaBuilder.record("AvroHttpRequest").namespace("com.baeldung.avro.model").fields() .requiredLong("requestTime") .name("clientIdentifier").type(clientIdentifier).noDefault() .name("employeeNames").type().array().items().stringType().arrayDefault(null) .name("active").type().enumeration("Active").symbols("YES", "NO").noDefault() .endRecord(); return avroHttpRequest; }
public AvroHttpRequest deSerealizeAvroHttpRequestBinary(byte[] data) { DatumReader employeeReader = new SpecificDatumReader<>(AvroHttpRequest.class); Decoder decoder = DecoderFactory.get() .binaryDecoder(data, null); try { return employeeReader.read(null, decoder); } catch (IOException e) { logger.error("Deserialization error" + e.getMessage()); } return null; }
Trending Discussions on http-request
Trending Discussions on http-request
QUESTION
I am getting an error after trying to install and use web3 into my react native website, that I am building to learn more about web3 development. After installing web3 and then adding:
import Web3 from 'web3';
const web3 = new Web3(Web3.givenProvider || "http://localhost:8545");
web3.eth.getAccounts().then(console.log);
Into my App.js file I have received these errors that follow:
Compiled with problems:X
ERROR in ./node_modules/cipher-base/index.js 3:16-43
Module not found: Error: Can't resolve 'stream' in '/Users/keyesbruh/Documents/Programming/nft-project/node_modules/cipher-base'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "stream": require.resolve("stream-browserify") }'
- install 'stream-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "stream": false }
ERROR in ./node_modules/eth-lib/lib/bytes.js 9:193-227
Module not found: Error: Can't resolve 'crypto' in '/Users/keyesbruh/Documents/Programming/nft-project/node_modules/eth-lib/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto-browserify") }'
- install 'crypto-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "crypto": false }
ERROR in ./node_modules/web3-eth-accounts/lib/index.js 31:74-91
Module not found: Error: Can't resolve 'crypto' in '/Users/keyesbruh/Documents/Programming/nft-project/node_modules/web3-eth-accounts/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto-browserify") }'
- install 'crypto-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "crypto": false }
ERROR in ./node_modules/web3-eth-accounts/node_modules/eth-lib/lib/bytes.js 7:193-227
Module not found: Error: Can't resolve 'crypto' in '/Users/keyesbruh/Documents/Programming/nft-project/node_modules/web3-eth-accounts/node_modules/eth-lib/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto-browserify") }'
- install 'crypto-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "crypto": false }
ERROR in ./node_modules/web3-providers-http/lib/index.js 30:11-26
Module not found: Error: Can't resolve 'http' in '/Users/keyesbruh/Documents/Programming/nft-project/node_modules/web3-providers-http/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "http": require.resolve("stream-http") }'
- install 'stream-http'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "http": false }
ERROR in ./node_modules/web3-providers-http/lib/index.js 32:12-28
Module not found: Error: Can't resolve 'https' in '/Users/keyesbruh/Documents/Programming/nft-project/node_modules/web3-providers-http/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "https": require.resolve("https-browserify") }'
- install 'https-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "https": false }
ERROR in ./node_modules/xhr2-cookies/dist/xml-http-request.js 37:11-26
Module not found: Error: Can't resolve 'http' in '/Users/keyesbruh/Documents/Programming/nft-project/node_modules/xhr2-cookies/dist'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "http": require.resolve("stream-http") }'
- install 'stream-http'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "http": false }
ERROR in ./node_modules/xhr2-cookies/dist/xml-http-request.js 39:12-28
Module not found: Error: Can't resolve 'https' in '/Users/keyesbruh/Documents/Programming/nft-project/node_modules/xhr2-cookies/dist'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "https": require.resolve("https-browserify") }'
- install 'https-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "https": false }
ERROR in ./node_modules/xhr2-cookies/dist/xml-http-request.js 41:9-22
Module not found: Error: Can't resolve 'os' in '/Users/keyesbruh/Documents/Programming/nft-project/node_modules/xhr2-cookies/dist'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "os": require.resolve("os-browserify/browser") }'
- install 'os-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "os": false }
I have found these errors on multiple other posts. I have tried to install each of the following os-browserify, https-browserify, stream-http, stream-browserify, crypto-browserify. While also trying to add a fallback for each one in webpack.config.js file. But still nothing is helping or working. So hopefully someone else will have an answer. Thanks have a good day!
ANSWER
Answered 2022-Feb-24 at 03:18I figured it out. There's two fixes from this article: https://medium.com/@rasmuscnielsen/how-to-compile-web3-js-in-laravel-mix-6eccb4577666
Easy way, Need to change import:
import Web3 from 'web3'
to
import Web3 from 'web3/dist/web3.min.js'
QUESTION
Sorry, this question is going to be a bit vague, mostly because I honestly don't know where to go next. I followed this tutorial here (https://auth0.com/blog/how-to-make-secure-http-requests-with-vue-and-express/) and everything worked up to the nearly last entry. Now, I'm getting these errors:
ERROR in /home/aron/code/cx/client/src/views/EventSingle.vue(44,10):
44:10 Property 'getEventData' does not exist on type '{ name: string; data(): { event: {}; }; created(): void; methods: { getEventData(): Promise; }; }'.
42 | },
43 | created() {
> 44 | this.getEventData(); // NEW - call getEventData() when the instance is created
| ^
45 | },
46 | methods: {
47 | async getEventData() {
ERROR in /home/aron/code/cx/client/src/views/EventSingle.vue(49,36):
49:36 Property '$auth' does not exist on type '{ getEventData(): Promise; }'.
47 | async getEventData() {
48 | // Get the access token from the auth wrapper
> 49 | const accessToken = await this.$auth.getTokenSilently()
| ^
50 |
51 | // Use the eventService to call the getEventSingle method
52 | EventService.getEventSingle(this.$route.params.id, accessToken)
ERROR in /home/aron/code/cx/client/src/views/EventSingle.vue(52,38):
52:38 Property '$route' does not exist on type '{ getEventData(): Promise; }'.
50 |
51 | // Use the eventService to call the getEventSingle method
> 52 | EventService.getEventSingle(this.$route.params.id, accessToken)
| ^
53 | .then(
54 | (event => {
55 | this.$set(this, "event", event);
ERROR in /home/aron/code/cx/client/src/views/EventSingle.vue(55,14):
55:14 Property '$set' does not exist on type '{ getEventData(): Promise; }'.
53 | .then(
54 | (event => {
> 55 | this.$set(this, "event", event);
| ^
56 | }).bind(this)
57 | );
58 | }
Here's my tsconfig.json:
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"importHelpers": true,
"moduleResolution": "node",
"experimentalDecorators": true,
"skipLibCheck": true,
"esModuleInterop": true,
"noImplicitAny": false,
"allowSyntheticDefaultImports": true,
"allowJs": true,
"sourceMap": true,
"baseUrl": ".",
"resolveJsonModule": true,
"types": [
"webpack-env",
"jest"
],
"typeRoots": ["./@types", "./node_modules/@types"],
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost","es2015", "es2016", "es2018.promise"
]
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"exclude": [
"node_modules"
]
}
I'm not incredibly familiar with TypeScript, Javascript, etc, and I've been poking around at various ways to solve this - https://blog.risingstack.com/auth0-vue-typescript-quickstart-docs/ and https://auth0.com/docs/quickstart/spa/vuejs/01-login.
My GUESS is that the Vue object prototype is not being extended with the Auth0 plug-in, and it's something about the way the frameworks have changed since this tutorial was written. Any suggestions? Happy to paste in more info if it helps.
Thanks!
Thank you so much tony19! That solved three out of the four bugs - the new code looks like this:
import EventService from '../services/EventService.js';
import Vue from 'vue';
export default Vue.extend({
name: 'EventSingle',
data() {
// NEW - initialize the event object
return {
event: {}
}
},
created() {
this.getEventData(); // NEW - call getEventData() when the instance is created
},
methods: {
async getEventData() {
// Get the access token from the auth wrapper
const accessToken = await this.$auth.getTokenSilently()
// Use the eventService to call the getEventSingle method
EventService.getEventSingle(this.$route.params.id, accessToken)
.then(
(event => {
this.$set(this, "event", event);
}).bind(this)
);
}
}
});
The only remaining bug is now here:
ERROR in /home/aron/code/cx/client/src/views/EventSingle.vue(51,38):
51:38 Property '$auth' does not exist on type 'CombinedVueInstance; }, unknown, Readonly>>'.
49 | async getEventData() {
50 | // Get the access token from the auth wrapper
> 51 | const accessToken = await this.$auth.getTokenSilently()
| ^
52 |
53 | // Use the eventService to call the getEventSingle method
54 | EventService.getEventSingle(this.$route.params.id, accessToken)
ANSWER
Answered 2022-Mar-22 at 03:38To enable type inference in the single file component, use Vue.extend()
on the component declaration:
// EventSingle.vue (Vue 2)
import Vue from 'vue';
👇
export default Vue.extend({
created() {
this.getEventData(); // 💡 type inference now enabled
}
})
In Vue 3, use defineComponent()
instead:
// EventSingle.vue (Vue 3)
import{ defineComponent } from 'vue';
👇
export default defineComponent({
created() {
this.getEventData(); // 💡 type inference now enabled
}
})
To declare the types for $auth
on the Vue instance, create a .d.ts
file in src/
with the following contents (and if using VS Code, restart IDE to properly index the file). The $auth
property from the plugin only uses a subset of the Auth0Client
interface, so we expose that same subset of the interface in the type augmentation:
// src/auth0.d.ts
import type Vue from 'vue'
import type { Auth0Client } from '@auth0/auth0-spa-js'
declare module 'vue/types/vue' {
interface Vue {
$auth: Pick
}
}
export {}
QUESTION
According to the suppliers data i should have:
- Http type GET
- Response type: application/json
- Parameter: Authorization: bearer + Token
- Curl: curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer + Token, 'http://localhost:8080/api/v1/doors'
- Request URL: 'http://localhost:8080/api/v1/doors'
I have translated this to Delphi(Indy TidHttp):
procedure TForm42.Button2Click(Sender: TObject);
var
resp: TMemoryStream;
begin
resp := TMemoryStream.Create;
try
IdHTTP1.Request.Clear;
IdHTTP1.Request.Accept := 'application/json';
IdHTTP1.Request.BasicAuthentication := True;
IdHTTP1.Request.CustomHeaders.FoldLines := False;
IdHTTP1.Request.CustomHeaders.Values['Authorization'] := 'Bearer ' + TokenStr;
IdHTTP1.Get('http://10.10.1.62:8080/api/v1/doors', resp);
resp.Position := 0;
memCall.Lines.LoadFromStream(resp);
finally
resp.Free;
end;
end;
I read a lot about it here, so finally i also added 'foldlines (Adding custom header to TIdHttp request, header value has commas) I also tried 'X-Authorization' as parameter, something i read from R. Lebeau, but the only reaction i get is an errordialog saying '401 unauthorized'.
I'm sure about the Token string (-> 'bearer ' + TokenStr) because i get an answer when putting the string in the suppliers trial.
Does someone have an idea what i'm doing wrong?
ANSWER
Answered 2022-Mar-17 at 01:11Request.BasicAuthentication
should be False
not True
when using custom authentications.
And you don't need to set CustomHeaders.FoldLines
as TIdHTTP
already disables folding by default (it wasn't disabled by default at the time the other question was posted).
Otherwise, the rest of the code looks fine.
Though, I would suggest specifying TEncoding.UTF8
on the call to LoadFromStream()
), eg:
procedure TForm42.Button2Click(Sender: TObject);
var
resp: TMemoryStream;
begin
resp := TMemoryStream.Create;
try
IdHTTP1.Request.Clear;
IdHTTP1.Request.Accept := 'application/json';
IdHTTP1.Request.BasicAuthentication := False;
IdHTTP1.Request.CustomHeaders.Values['Authorization'] := 'Bearer ' + TokenStr;
IdHTTP1.Get('http://10.10.1.62:8080/api/v1/doors', resp);
resp.Position := 0;
memCall.Lines.LoadFromStream(resp, TEncoding.UTF8);
finally
resp.Free;
end;
end;
Or, using the overload of TIdHTTP.Get()
that returns a string
:
procedure TForm42.Button2Click(Sender: TObject);
begin
IdHTTP1.Request.Clear;
IdHTTP1.Request.Accept := 'application/json';
IdHTTP1.Request.BasicAuthentication := False;
IdHTTP1.Request.CustomHeaders.Values['Authorization'] := 'Bearer ' + TokenStr;
memCall.Text := IdHTTP1.Get('http://10.10.1.62:8080/api/v1/doors');
end;
QUESTION
Below references to questions that have helped me get this far:
- How to print out a dictionary nicely in Python?
- how to indent multiline message printed by python logger?
- Python requests - print entire http request (raw)?
- Log all requests from the python-requests module
I currently have this:
# got from second reference link
class MultiLineFormatter(logging.Formatter):
def get_header_length(self, record):
# Get the header length of a given record
return len(super().format(logging.LogRecord(name=record.name,
level=record.levelno,
pathname=record.pathname,
lineno=record.lineno,
msg='',
args=(),
exc_info=None)))
def format(self, record):
# Format a record with added indentation
indent = ' ' * self.get_header_length(record)
head, *trailing = super().format(record).splitlines(True)
# return
return head + ''.join(indent + line for line in trailing)
def report_logger(log_level: logging.INFO):
# set format for logging style
formatter = MultiLineFormatter(fmt='%(asctime)-8s - %(levelname)-8s - %(name)-30s : %(message)s',
datefmt='%y/%b/%Y %H:%M:%S', )
# create console logger
console = logging.StreamHandler()
console.setLevel(log_level)
# apply formatter to console logger
console.setFormatter(formatter)
# request logger
final_logger = logging.getLogger(__name__)
final_logger.setLevel(log_level)
# prevent double logs in console
final_logger.propagate = False
# add handler
final_logger.addHandler(console)
# return
return final_logger
def print_request(request_data):
format_headers = lambda d: '\n '.join(f'{k}: {v}' for k, v in d.items())
request_body = json.dumps(request_data.req_body, indent=20, sort_keys=True, default=str)
response_text = json.dumps(request_data.resp_text, indent=20, sort_keys=True, default=str)
response_body = json.dumps(request_data.resp_as_dict, indent=20, sort_keys=True, default=str)
msg_print = f'---------------- Request ----------------\n' \
f'Headers : {format_headers(request_data.req_headers)}\n' \
f'URL : {request_data.req_url}\n' \
f'Method : {request_data.req_method}\n' \
f'Body : {request_body}\n' \
f'\n' \
f'---------------- Response ----------------\n' \
f'Headers : {format_headers(request_data.resp_headers)}\n' \
f'Status Code : {request_data.resp_status_code}\n' \
f'Text : {response_text}\n' \
f'Response : {response_body}\n'
logger.info(msg_print)
At the moment, it's pretty much on par for what I'm trying to achieve, however, I'm just trying to get the output of the response bodies a little more "nice".
In the last line above logger.info(msg_print)
I get this output:
22/Feb/2022 16:11:09 - INFO - logger_function : ---------------- Request ----------------
Headers : User-Agent: python-requests/2.25.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
authorization: AuthToken
URL : my_url
Method : GET
Body : null
---------------- Response ----------------
Headers : content-type: application/json
Content-Length: 119
x-envoy-upstream-service-time: 187
date: today
server: server
Via: 1.1 service
Alt-Svc: alt_service
Status Code : 401
Text : {
"code": 111111,
"component": "ABC",
"errorType": "DEF",
"message": "",
"traceId": UUID4
}
Response : {
"code": 111111,
"component": "ABC",
"errorType": "DEF",
"message": "",
"traceId": UUID4
}
But I'd really like to get those dictionaries to be like this:
22/Feb/2022 16:11:09 - INFO - logger_function : ---------------- Response ----------------
Text : {"code": 111111,
"component": "ABC",
"errorType": "DEF",
"message": "",
"traceId": UUID4}
Response : {"code": 111111,
"component": "ABC",
"errorType": "DEF",
"message": "",
"traceId": UUID4}
Edit:
Sample dict
with nested values:
{
"level1": {
"myInt": "Original",
"level2": {
"myInt": "Original",
"myBool": "Original",
"level3": {
"myBool": "Original"
}
}
},
"level4": [
{
"myList": "Original"
},
{
"myList": "Original"
}
,
{
"myList": "Original"
}
]
}
ANSWER
Answered 2022-Feb-04 at 14:57Though it seems a bit fragile, it looks like you can slightly adjust the indentation then use the re
package to strip out the unwanted spacing between the leading and closing curly braces.
import json
import re
req_body = {"code": 111111, "component": "ABC", "errorType": "DEF", "message": "", "traceId": "UUID4"}
resp_text = {"code": 111111, "component": "ABC", "errorType": "DEF", "message": "", "traceId": "UUID4"}
request_body = json.dumps(req_body, indent=20, sort_keys=True, default=str)
response_text = json.dumps(resp_text, indent=17, sort_keys=True, default=str)
response_text = re.sub(r"^{\s*", "{", response_text)
response_text = re.sub(r"\s*}$", "}", response_text)
msg_print = f'---------------- Response ----------------\n' \
f'Request : {request_body}\n' \
f'Response : {response_text}\n'
print(msg_print)
That looks like it might give you what you are after:
---------------- Response ----------------
Request : {
"code": 111111,
"component": "ABC",
"errorType": "DEF",
"message": "",
"traceId": "UUID4"
}
Response : {"code": 111111,
"component": "ABC",
"errorType": "DEF",
"message": "",
"traceId": "UUID4"}
QUESTION
I would like to create a JMeter test setup with important sampling and test variation parameters entirely controlled by csv-Files (i.e. not modifying the JMX-File). It should be run with maven. Ideas is as follows: sources.csv contains
sampleRate;file
40;samplesForController1.csv
30;samplesForController2.csv
5;samplesForController3.csv
...
SampleRate should determine, how often a certain number of tests (defined by parameters in the respective file) should be executed (relative to others). How could this be achieved? Im asking for the first step here (make sure the files/testSamples are sampled/executed given the indicated sampleRate) as I think I can solve the second part (dealing with parameters in samplesForController1.csv etc.) by myself.
P.S. I'm struggling with the options presented here: In Jmeter, I have to divide number of thread into the multiple http requests in different percentage but have to keep sequence remain same since
- afaics, thread groups cannot be created on-the-fly/dynamically/progammatically
- apparently, Throughput Controller needs to know its child element(s probablities) upfront (i.e. not created dynamically), otherweise, sampling is very odd (I could not get it working maintaining the desired sampleRate)
- I did not try to integrate jmeter-plugins in the maven build thus far as my impression is, the available plugins/controllers also needs to know their child element upfront
ANSWER
Answered 2022-Feb-16 at 18:11It is possible to create thread groups programmatically, check out:
- Five Ways To Launch a JMeter Test without Using the JMeter GUI
- jmeter-from-code example project
- jmeter-java-dsl project
You can use Switch Controller and use a function like __groovy() to generate the child element index, example implementation can be found in Running JMeter Samplers with Defined Percentage Probability article
It's not a problem to use JMeter Plugins with Maven, see Adding jar's to the /lib/ext directory documentation section for example setup
QUESTION
I am trying to learn dart, experimenting with http requests from this blog.
So I installed dart on Windows but for whatever reason I cant seem to run this script:
import 'dart:html';
import 'dart:convert';
void main() {
var data = { 'title' : 'My first post' };
HttpRequest.request(
'https://jsonplaceholder.typicode.com/posts',
method: 'POST',
sendData: json.encode(data),
requestHeaders: {
'Content-Type': 'application/json; charset=UTF-8'
}
)
.then((resp) {
print(resp.responseUrl);
print(resp.responseText);
});
}
// Response
// https://jsonplaceholder.typicode.com/posts
// { "title": "My first post", "id": "101" }
When I run this from Windows terminal $dart run script.dart
this will error:
script.dart:1:8: Error: Not found: 'dart:html'
import 'dart:html';
^
script.dart:8:3: Error: Undefined name 'HttpRequest'.
HttpRequest.request(
^^^^^^^^^^^
But in the blog post there is a link to dart pad where the code runs just fine. Any ideas to try? Thanks for any incite
$dart --version
Dart SDK version: 2.15.1 (stable) (Tue Dec 14 13:32:21 2021 +0100) on "windows_x64"
ANSWER
Answered 2022-Jan-24 at 21:32Using the http package, is the preferred approach since it will work consistently on all platforms.
The same request can be made by doing the following:
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() {
var data = {'title': 'My first post'};
http.post(
Uri.parse('https://jsonplaceholder.typicode.com/posts'),
headers: {'Content-Type': 'application/json; charset=UTF-8'},
body: json.encode(data),
).then((resp) {
print(resp.body);
});
}
Although typically async
/await
syntax is used instead:
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
var data = {'title': 'My first post'};
var resp = await http.post(
Uri.parse('https://jsonplaceholder.typicode.com/posts'),
headers: {'Content-Type': 'application/json; charset=UTF-8'},
body: json.encode(data),
);
print(resp.body);
}
QUESTION
I am new to Web3 and I am trying to create a react app integrated with web3. Below are the steps I followed in Ubuntu.
create-react-app app_name
cd app_name
npm i --save web3
npm start
and everything worked fine, I got the react app home page.
Now, as soon as I put the following line of code in the App.js the app breaks and I get the following long error. (See below, row 5)
import Web3 from "web3";
Compiled with problems:X
ERROR in ./node_modules/cipher-base/index.js 3:16-43
Module not found: Error: Can't resolve 'stream' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/cipher-base'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "stream": require.resolve("stream-browserify") }'
- install 'stream-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "stream": false }
ERROR in ./node_modules/eth-lib/lib/bytes.js 9:193-227
Module not found: Error: Can't resolve 'crypto' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/eth-lib/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto-browserify") }'
- install 'crypto-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "crypto": false }
ERROR in ./node_modules/ethereumjs-util/dist.browser/account.js 71:31-48
Module not found: Error: Can't resolve 'assert' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/ethereumjs-util/dist.browser'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "assert": require.resolve("assert/") }'
- install 'assert'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "assert": false }
ERROR in ./node_modules/ethereumjs-util/dist.browser/address.js 14:31-48
Module not found: Error: Can't resolve 'assert' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/ethereumjs-util/dist.browser'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "assert": require.resolve("assert/") }'
- install 'assert'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "assert": false }
ERROR in ./node_modules/ethereumjs-util/dist.browser/object.js 46:31-48
Module not found: Error: Can't resolve 'assert' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/ethereumjs-util/dist.browser'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "assert": require.resolve("assert/") }'
- install 'assert'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "assert": false }
ERROR in ./node_modules/web3-eth-accounts/lib/index.js 31:74-91
Module not found: Error: Can't resolve 'crypto' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/web3-eth-accounts/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto-browserify") }'
- install 'crypto-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "crypto": false }
ERROR in ./node_modules/web3-eth-accounts/node_modules/eth-lib/lib/bytes.js 7:193-227
Module not found: Error: Can't resolve 'crypto' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/web3-eth-accounts/node_modules/eth-lib/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto-browserify") }'
- install 'crypto-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "crypto": false }
ERROR in ./node_modules/web3-providers-http/lib/index.js 30:11-26
Module not found: Error: Can't resolve 'http' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/web3-providers-http/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "http": require.resolve("stream-http") }'
- install 'stream-http'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "http": false }
ERROR in ./node_modules/web3-providers-http/lib/index.js 32:12-28
Module not found: Error: Can't resolve 'https' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/web3-providers-http/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "https": require.resolve("https-browserify") }'
- install 'https-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "https": false }
ERROR in ./node_modules/web3-providers-ws/lib/helpers.js 11:12-26
Module not found: Error: Can't resolve 'url' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/web3-providers-ws/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "url": require.resolve("url/") }'
- install 'url'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "url": false }
ERROR in ./node_modules/xhr2-cookies/dist/xml-http-request.js 37:11-26
Module not found: Error: Can't resolve 'http' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/xhr2-cookies/dist'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "http": require.resolve("stream-http") }'
- install 'stream-http'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "http": false }
ERROR in ./node_modules/xhr2-cookies/dist/xml-http-request.js 39:12-28
Module not found: Error: Can't resolve 'https' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/xhr2-cookies/dist'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "https": require.resolve("https-browserify") }'
- install 'https-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "https": false }
ERROR in ./node_modules/xhr2-cookies/dist/xml-http-request.js 41:9-22
Module not found: Error: Can't resolve 'os' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/xhr2-cookies/dist'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "os": require.resolve("os-browserify/browser") }'
- install 'os-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "os": false }
ERROR in ./node_modules/xhr2-cookies/dist/xml-http-request.js 43:10-24
Module not found: Error: Can't resolve 'url' in '/home/gkv/Stuff/Tutorial/Projects/react/lottery-react-new/node_modules/xhr2-cookies/dist'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "url": require.resolve("url/") }'
- install 'url'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "url": false }
I tried multiple stackoverflow post but none of them seems to have proper solution.
- Error Library web3 and Webpack in react and angular [closed]
- Module not found: Error: Can't resolve 'stream' in 'C:\dev\jszip-test\node_modules\jszip\lib'
- I am getting this error whilr importing Web3 from web3 in react js 17.0.1.how to fix this
If someone could help that would be great. I have been struggling with this for 5 days.
ANSWER
Answered 2022-Jan-23 at 09:25That is because Webpack 5 no longer does auto-polyfilling for node core modules.
Simply in order to modify the webpack.config.js in Create React App, you have to run
npm run eject
this will create a config
directory and inside you will have webpack.config.js
.
npm i node-polyfill-webpack-plugin
then inside webpack.config.js:
const NodePolyfillPlugin = require("node-polyfill-webpack-plugin")
add this to plugins
array
plugins: [
new NodePolyfillPlugin()
],
I explained how to set up with create-react-app here :
Web3 Issue : React Application not compiling
I also explained to solve with webpack:
QUESTION
We have a Web API (.NET Core 5) which passes the request on to another remote Web API.
The Web API grabs some cookies from the incoming request and appends them to the outgoing request.
Normally this works fine and we see the request cookies arriving at the remote Web API.
But when multiple requests are sent simultaneously, the cookies from one incoming request are somehow leaking over into the outgoing request of another.
This even happens when using totally separate users and totally separate browsers.
Things I've tried and confirmed:
The code which copies the cookies from incoming request to outgoing request works perfectly fine. In fact even when the cookies appearing on the remote API are "leaked", my custom logging suggests it still worked as expected
I can see the expected/leaky request cookie on the remote Web API (in its raw IIS logs), so it can't be the remote API adding it to the request in its pipeline.
Added logging to the HttpClient call but can't see the unexpected cookies being sent.
This doesn't happen locally
My feeling is something is happening in HttpClient somehow??
UPDATE 1 I added logging to
CopyCookieHandler
and it only gets created once and reused by all requestsUPDATE 2 I just read that
HttpMessageHandler
instances results inCookieContainer
objects being shared...which may possible explain this... https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-5.0#cookies
The first API has this setup to use HttpClient:
services.AddHttpContextAccessor()
services.AddHttpClient()
.AddHttpMessageHandler();
services.AddTransient();
where
public class RemoteService : IRemoteService
{
private HttpClient _client;
public RemoteService(HttpClient client)
{
_client = client;
}
public async Task Get()
{
var request = new HttpRequestMessage("POST", "http://example.com");
await MakeCall(request);
}
}
The CopyCookieHandler
is:
public class CopyCookieHandler : DelegatingHandler
{
public IHttpContextAccessor _context;
public CopyCookieHandler(IHttpContextAccessor context)
{
_context = context;
}
protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//Copies the incoming request cookie and adds to the outgoing request
var productId = _context.HttpContext.Request.Cookies["productId"];
request.Headers.Add(HeaderNames.Cookie, $"productId={productId});
var response = await base.SendAsync(request, cancellationToken);
return response;
}
}
ANSWER
Answered 2022-Jan-06 at 15:39It turns out that, by default, the HttpClientHandler
will store the response cookies in a CookieContainer
and then append them onto the next request.
This explains why I was seeing extra cookies on the remote API's requests, but they were actually coming from the response of a previously completed request.
This documentation led me to the fix
So by adding this code:
services.AddHttpClient()
.ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler()
{
UseCookies = false,
};
})
.AddHttpMessageHandler();
will prevent the HttpClientHandler
from sharing your cookies between request on your HttpClient
.
QUESTION
Module Warning (from ./node_modules/source-map-loader/dist/cjs.js): Failed to parse source map from .\node_modules\@ethersproject\abi\src.ts\_version.ts' file: Error: ENOENT: no such file or directory, open ...node_modules\@ethersproject\abi\src.ts\_version.ts'
same thing, but goes for path ending in abi-coder.ts', abstract-coder.ts', address.ts', anonymous.ts', array.ts', boolean.ts', bytes.ts', fixed-bytes.ts', null.ts', number.ts', string.ts', tuple.ts', index.ts', interface.ts'
then I get the same thing for Failed to parse source map from .\node_modules\web3-providers-http\node_modules\xhr2-cookies\errors.ts' file: Error: ENOENT: no such file or directory, open ...node_modules\web3-providers-http\node_modules\xhr2-cookies\errors.ts'
index.ts', progress-event.ts', xml-http-request-event-target.ts', xml-http-request-upload.ts', xml-http-request.ts'
Each of these files are accompanied by the file name but ending in .js.map
or nothing and is a Javascript file instead
I tried this:
npm i ethers
and npm i xhr2-cookies@0.9.1
but it did not change anything.
I had to move some files around to get them in the correct folder set up/ path, but each TS File is named ending in .d
, but it does not work if I replace it with .ts
nor remove it all together. Any idea what is going on?
I also tried adding all the dependencies that were missing manually from the npm list
.
I already fixed export.module
and setupMiddlewares
before this.
I only tried changing the names of the first 2 files, but I still got the same errors.
(Update: for some weird reason, the compiler is picking up on _version.ts and abi-coder.ts in the src.ts folder, but everything else is not working. I removed the .d
here and those work, but I removed it from all the others and restarted my computer and it still does not work.)
Thanks!
ANSWER
Answered 2022-Jan-01 at 03:25so what I did was run npm update ethers
and then I believe it reverted all my changes back to the original file names with the .d
in the name for the TS files and then I was reading up on the errors and somewhere in there it said run npm audit fix --force
and then I ran my project again and it worked!
QUESTION
In order to get the enabled GCP-api services list, I am trying to get the service.list as per this HTTP request in this link.
Here's my code:
import json
from requests.auth import HTTPBasicAuth
import requests
from google.oauth2 import service_account
auth = HTTPBasicAuth('myusername@gmail.com','xyz....')
url = 'https://serviceusage.googleapis.com/v1/projects/my-proj-id123/services'
headers = {
"Accept": "application/json"
}
response = requests.request(
"GET",
url,
headers=headers,
auth=auth
)
# a=json.loads(response.text)
print(response.text)
But I am getting this error:
{
"error": {
"code": 403,
"message": "The request is missing a valid API key.",
"status": "PERMISSION_DENIED"
}
}
NOTE: I need a way to get the respond as per this link, either by service account or by api token . I have service account key (credential.json
) but I don't know where to put for http request. kindly suggest me the procedures.
ANSWER
Answered 2021-Dec-28 at 17:32I encourage you to consider using Google's SDKs whenever you interact with Google's services.
Not only do the services provide language-specific resource types that facilitate creating requests and responses, but you get simpler auth, logging etc. etc. etc.
Documented:
- google_auth
- Python Client for Service Management API
- list_services -->
ListServicesPager
-->ListServicesResponse
-->ManagedService
- APIs Explorer --> Service Management -->
services.list
--> Response --> ManagedService
Setup:
PROJECT=[[YOUR-PROJECT]]
ACCOUNT=[[YOUR-ACCOUNT]]
python3 -m venv venv
source venv/bin/activate
python3 -m pip install google-auth
python3 -m pip install google-cloud-service-management
gcloud iam service-accounts create ${ACCOUNT} \
--project=${PROJECT}
EMAIL="${ACCOUNT}@${PROJECT}.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding ${PROJECT} \
--member=serviceAccount:${EMAIL} \
--role=roles/viewer
gcloud iam service-accounts keys create ${PWD}/${ACCOUNT}.json \
--iam-account=${EMAIL}
export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/${ACCOUNT}.json
python3 ./main.py
main.py
:
import google.auth
from google.cloud import servicemanagement_v1
credentials,project = google.auth.default()
client = servicemanagement_v1.ServiceManagerClient()
# How to construct the Request
rqst = {
# Purely for example
"pageSize": 5,
# List only project's services
"consumer_id: "project:{project}".format(
project=project
)
}
# Response is a ServiceListPager
resp = client.list_services(request=rqst)
# Which is iterable
for managed_service in resp:
try:
# This is a quirk of gRPC Transcoding
# Convert a ManagedService to JSON
j=servicemanagement_v1.ManagedService.to_json(managed_service)
print(j)
except Exception as e:
print(e)
Yields:
{
"serviceName": "abusiveexperiencereport.googleapis.com",
"producerProjectId": ""
}
{
"serviceName": "acceleratedmobilepageurl.googleapis.com",
"producerProjectId": ""
}
{
"serviceName": "accessapproval.googleapis.com",
"producerProjectId": ""
}
...
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
Install http-request
You can use http-request like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the http-request component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .
Support
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesExplore Kits - Develop, implement, customize Projects, Custom Functions and Applications with kandi kits​
Save this library and start creating your kit
Share this Page